具有多个命令和标志的Git别名无法工作

时间:2014-08-12 05:47:02

标签: git terminal sh

今天早上,当我尝试使用

设置git别名时,这引起了我的兴趣
git config --global alias.ac '!sh -c "git add . && git commit -m $0"'

但由于错误

,它在git ac "Finish static pages"之后失效
fatal: Option -m cannot be combined with -c/-C/-F/--fixup.
在寻找周围之后,它仍让我头疼。为什么我不能将-m选项与sh -c结合使用,我应该如何正确地使其工作?非常感谢!

修改的 如果我使用

git config --global alias.ac '!sh -c "git add . && git commit -m $1"'

最后代替$0,它会说

sh: git add -A ; git commit --message Finish static pages: No such file or directory
fatal: While expanding alias 'ac': 'sh -i "git add -A ; git commit --message $1"': No such file or directory

我想我正在寻找一种接受字符串而不是单字参数的方法,可能吗?

1 个答案:

答案 0 :(得分:1)

尝试使用$1代替$0

git config --global alias.ac '!sh -c "git add . && git commit -m \"$1\""'

$0将在您的提交消息中重复整个命令。含义,it isn't one of the positional parameters
您可以尝试为邮件添加双引号:\"$1\"


此类别名存在其他选项:请参阅“Git Alias - Multiple Commands and Parameters” 例如

git config --global alias.ac '!f(){ git add . && git commit -m "$1"; };f'