合并冲突会在压缩提交时破坏我的提交消息

时间:2010-08-31 01:10:35

标签: git merge

我使用git的常用工作流程是创建一个新的功能分支,在频繁提交时做一些工作,然后在功能正常工作和/或稳定时合并回开发分支。

通常,当我执行git merge --squash feature-branch时,我会得到一个很好的“压缩后续提交”消息,该消息会自动填充来自功能分支的所有提交消息。

但是,如果存在任何合并冲突(比如说我完成并合并了另一个功能),我似乎丢失了来自分支的所有提交消息。自动填充的提交消息填充冲突,但不填写提交消息。我的提交消息在哪里?我可以让他们回来吗?

3 个答案:

答案 0 :(得分:7)

是的,您可以返回压缩提交消息。它存储在.git / SQUASH_MSG中。

您可以使用以下命令将其用作模板:

git commit -t .git/SQUASH_MSG

答案 1 :(得分:4)

这不能直接回答你的问题,但你应该能够首先避免冲突。

考虑做一个

git rebase master topic

执行合并之前。本页http://git-scm.com/docs/git-rebase的DESCTIPTION部分应该会有所帮助。这也可以避免壁球的需要,因为交互式底板将允许您压缩您选择的提交。

编辑: 另见:In git, what is the difference between merge --squash and rebase?

答案 2 :(得分:1)

git没有真正丢失任何东西。可以使用以下命令获取功能分支上的提交列表:

git cherry feature-branch

然后只需将其传递给git cat-file

git cherry feature-branch | cut -f2 -d' ' | git cat-file --batch

您需要清理输出。我不知道如何更好地自动化它。