我想通过使用
git commit --fixup
编写脚本来压缩一些提交,但我一直坚持这样一个事实,即消息的 -m
开关不能与 --fixup:amend
一起使用。
$ git commit --fixup=amend::/'Upgrade to foo' -m "Upgrade to bar"
fatal: options '-m' and '--fixup:amend' cannot be used together
我可以在没有
--fixup
的情况下使用普通的amend
,但是我无法更改提交消息。如果没有 -m
消息,编辑器将打开以编辑提交消息,因此无法通过脚本来完成。
我知道这些是“瓷器”命令,但是当我通过脚本执行此操作时,我想知道是否还有一种方法可以在仍然使用“管道”以非交互方式更改提交消息的同时执行相当于
git commit --fixup=amend
的操作命令?
当您使用
--fixup
或 --amend
时,Git 不允许您添加新的提交消息,因为这些命令专门用于调整以前的提交,而不是创建新的、不同的提交。
如果你想使用脚本以非交互方式更改提交消息,你可以这样做:
1.使用
git add
进行更改。
2.使用
git commit --no-edit --amend
提交更改。这将修改最后一次提交而不更改其消息。
3.使用
GIT_SEQUENCE_EDITOR
环境变量和 rebase 更改提交消息:
GIT_SEQUENCE_EDITOR="sed -i -re 's/^pick (\\w+) .*/reword \\1/'" git rebase -i HEAD~1
echo "Your new commit message" > .git/COMMIT_EDITMSG
希望对你有帮助