使用shell函数时无法添加git别名

时间:2018-08-03 01:11:10

标签: git git-bash git-alias

我正在尝试使用shell函数添加以下别名

scommit = "!f() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am \" Update submodule \";}; f"

但是当我在Git bash中运行它时(在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"

当然不起作用,因为

  

扩展别名“ scommit”失败; 'fit'不是git命令

我也尝试在PowerShell中运行它,但显示用法:git config []…

当我手动将其添加到.git / config时,它将起作用。

如何使用git bash /命令行/ PowerShell添加此别名? 为什么将其转换为fit fetch upstream()

1 个答案:

答案 0 :(得分:2)

我刚刚在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')在别名的外面,weak quotes")在里面。

这样可以避免!被解释为历史记录中的扩展命令(就像您can see here一样)(尽管set +o histexpand在git config命令可以帮助之前)