我正在尝试使用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()
?
答案 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命令可以帮助之前)