使用 shell 函数时无法添加 git 别名
Can't add git alias when using shell function
我正在尝试使用 shell 函数添加以下别名
scommit = "!f() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am \" Update submodule \";}; f"
但是当我运行它在Gitbash(在Windows)
git config --local alias.scommit "!f() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am "" Update submodule "";}; f"
我得到了输出
git config --local alias.scommit "fit fetch upstream() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am "" Update submodule "";}; f"
当然它不起作用因为
Expansion of alias 'scommit' failed; 'fit' is not a git command
我也尝试在 PowerShell 中 运行 它,但它显示了用法:git config [] …
当我手动将它添加到 .git/config 时,它就可以工作了。
如何使用 git bash/ 命令行 / PowerShell 添加此别名?
为什么会变成fit fetch upstream()
?
我刚刚在 Windows 10 上用 Git 2.18:
进行了测试
git config --local alias.scommit '!f() { git submodule foreach -q --recursive "git commit -a" || : ; git commit -am "Update submodule";}; f'
思路是把引号倒过来:strong quotes ('
) at the outside of the alias, weak quotes ("
) inside.
这避免了 !
被解释为历史命令的扩展(如您 can see here)(尽管 git 配置命令之前的 set +o histexpand
可能有所帮助)
我正在尝试使用 shell 函数添加以下别名
scommit = "!f() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am \" Update submodule \";}; f"
但是当我运行它在Gitbash(在Windows)
git config --local alias.scommit "!f() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am "" Update submodule "";}; f"
我得到了输出
git config --local alias.scommit "fit fetch upstream() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am "" Update submodule "";}; f"
当然它不起作用因为
Expansion of alias 'scommit' failed; 'fit' is not a git command
我也尝试在 PowerShell 中 运行 它,但它显示了用法:git config [] …
当我手动将它添加到 .git/config 时,它就可以工作了。
如何使用 git bash/ 命令行 / PowerShell 添加此别名?
为什么会变成fit fetch upstream()
?
我刚刚在 Windows 10 上用 Git 2.18:
进行了测试git config --local alias.scommit '!f() { git submodule foreach -q --recursive "git commit -a" || : ; git commit -am "Update submodule";}; f'
思路是把引号倒过来:strong quotes ('
) at the outside of the alias, weak quotes ("
) inside.
这避免了 !
被解释为历史命令的扩展(如您 can see here)(尽管 git 配置命令之前的 set +o histexpand
可能有所帮助)