Git:如何编辑/改写合并提交的消息?
如何编辑或改写合并提交的消息?
git commit --amend
是最后一次提交( HEAD
),但是如果在HEAD
之前呢?
git rebase -i HEAD~5
没有列出合并提交。
如果将--preserve-merges
选项(或其同义词-p
)添加到git rebase -i
命令中,则git会在重新绑定时尝试保留合并,而不是线性化历史logging,并且应该能够修改合并提交以及:
git rebase -i -p HEAD~5
请注意, 启动git1.7.9.6 (和git1.7.10 +), git merge
本身将始终触发编辑器 ,为您添加细节到合并。
“
git merge $tag
”合并一个带注释的标签在交互式编辑会话期间总是打开编辑器。 v1.7.10系列引入了一个环境variablesGIT_MERGE_AUTOEDIT来帮助旧脚本拒绝这种行为,但是维护轨道也应该支持它。
它还引入了一个环境variablesGIT_MERGE_AUTOEDIT
来帮助旧脚本拒绝这种行为。
请参阅“ 预测Git 1.7.10 ”:
最近在关于Git邮件列表的讨论中 ,Linus承认(我同意),这是我们在Git早期的devise错误之一。
在1.7.10及更高版本中,在交互式会话(即其标准input和连接到terminal的标准输出)中运行的git merge命令将在创build提交之前打开一个编辑器,以logging合并结果用户有机会解释合并,就像用户在解决冲突合并之后运行的git commit命令一样。
莱纳斯说:
但是我并不十分关心它是如何工作的 – 我的主要问题是git使得合并消息不好的情况变得容易。
我认为这是一个更简单的白痴: 我们甚至从来没有启动编辑器默认为“混帐合并”,但我们做一个“git commit
”。
那是一个devise上的错误,这意味着如果你真的想把注释添加到合并中,你必须做额外的工作。 所以人们不会 。
另一个不错的答案只使用原始命令 – knittl https://stackoverflow.com/a/7599522/94687 :
git checkout <sha of merge> git commit --amend # edit message git rebase HEAD previous_branch
或更好的(更正确的)最终rebase命令:
git rebase <sha of merge> previous_branch --onto HEAD
顺便说一句,使用原始命令可能有不消耗太多的CPU,让你等待未知的时间很好的“function”,直到GIT完成思考git rebase -p -i HEAD^^^^
的情况下需要重新提交的提交列表git rebase -p -i HEAD^^^^
(这样的命令会导致最后一次提交合并的最后一个提交的列表,在我的情况下,在我的情况下花了大约50秒!)。
git rebase -i HEAD~5
命令popup编辑器。 它列出了指定的提交(在这个例子中是五个)。 第一列包含每个提交的select。 只需在该编辑器中用reword
replacepick
并保存并closures编辑器即可。 然后git会popup编辑器的每个提交你改变pick
reword
,并让你编辑提交信息。