修改合并前发出的Git提交消息

Chr*_*ard 24 git git-rewrite-history

在合并到远程分支之前,我提交了一些测试代码.这次合并产生了很多冲突,并且花了一些时间才对.所以我的历史看起来像这样:

7ab562c Merge from remote branch
... whole load of commits brought across from the remote branch...
f3e71c2 Temporary TESTING COMMIT
Run Code Online (Sandbox Code Playgroud)

测试代码很好,我真的只想更改提交消息.通常情况下我会继续前进git rebase -i f3e71c2^(因为这还没有被推动),但是我被一位同事告知,这会搞砸合并.我真的不想搞砸合并:)

我的同事是对的吗?如果是这样,我能做些什么,或者我只需要忍受这段历史?

Von*_*onC 32

你可以尝试一下git rebase --preserve-merges --interactive,用:

-p
--preserve-merges
Run Code Online (Sandbox Code Playgroud)

而不是忽略合并,尝试重新创建它们.

手册页的BUG部分包括:

显示的待办事项列表--preserve-merges --interactive不代表修订图的拓扑.
编辑提交和重写他们的提交消息应该可以正常工作,但尝试重新提交提交往往会产生违反直觉的结果.


正如jthill评论所描述的那样(-p如果冲突解决方案是记录器,将更好地保留合并):

您可以追溯点亮rerere以进行合并:

git config rerere.enabled true
git checkout $merge^1
git merge $merge^2
git read-tree --reset -u $merge
git commit -m-
git checkout @{-1}
Run Code Online (Sandbox Code Playgroud)