git: How to change the commit message of an already committed file, non interactively?
我遇到了这样一种情况:提交的文件被bug跟踪工具审查,一旦它审查了提交消息就必须更改。
所以我的问题是,有没有一种方法可以更改已经提交到本地Git存储库的文件的提交消息?
- 早些时候问你,你可能已经赢得了很多的代表:stackoverflow.com/questions/179123/…
- 通常,您不希望更改提交消息,因为这样会更改提交ID,并产生各种复杂的结果。相反,使用git notes。
- @SLESKE原始海报希望更改本地提交的消息,这一直都在发生,只要提交不被其他人共享,就可以了。
- @纸杯蛋糕:是的。提到"由bug追踪器工具审查",我认为这可能是在将提交推送到某个中央服务器之后发生的,因为bug追踪器通常运行在中央服务器上,无法访问开发人员的本地repo。当然,我可能猜错了。
如果提交是在提示处(此后没有提交其他更改),则可以:
1
| git commit --amend -m"New commit message" |
如果此后已提交其他更改:
1
| git rebase -i <commit-to-change>~ |
号
这将激发一位编辑。在正确的提交条目上用edit替换pick,保存并退出。然后:
1 2
| git commit --amend -m"New commit message"
git rebase --continue |
- 在没有编辑器的帮助下,有没有一种方法可以做到这一点:将commit消息作为参数直接传递给git-rebase-i命令。例如,git-rebase-i应该替换特定commit的commit消息。
- 如果您有更多的提交,那么您将使用git rebase -i,因为您希望编辑一个提交。它允许一次编辑多个提交。我写的剧本和你想找的相似,我给了你最简单的答案。
- 假设提交已经在客户机上完成,我要寻找的是一个接受commitid并更改特定提交的提交消息的命令/脚本。如果你有剧本,你能分享一下吗?
- 是否也可以在不更改提交ID的情况下更改提交消息?
- 在不更改提交ID的情况下,无法更改提交消息。将生成提交ID,日志消息是公式的一部分。
- 当涉及到解决冲突和处理合并时,我拥有的脚本在本质上是非常手工的。我最近的一个会做一个git reset --hard ,如果有冲突,你就不能回到原来的状态。事实上,如果我的任务是做你要求的,我使用我提到的git rebase -i方法。有了git rebase -i,如果我想回到过去,我可以做git rebase --abort。