带有多个命令和标志的Git别名不能工作



这引起了我的兴趣,当我今天早上试图通过使用

设置一个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

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

$0将在提交消息中重复整个命令。也就是说,它不是位置参数之一。
您可以尝试为消息添加双引号:"$1"


对于这种别名还有其他选项:参见"Git别名-多个命令和参数"。
例如

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

最新更新