合并后解决冲突后提交消息的问题

时间:2011-03-24 15:38:05

标签: git git-branch git-commit

我是Git的新手。目前,我遇到了这种情况:

步骤0.我正在开发 sub -branch

步骤1.我添加了&在我的 sub -branch上提交了file1,file2,file3,分别提交消息 msg1,msg2,msg3

步骤2.我checkout master切换到分支

步骤3.我pull origin master使用最新的原始版本代码更新主分支

步骤4.我merge sub-branch将我的工作代码合并到当前的主分支代码

然后,我在 file2

中遇到了冲突

然后,我手动解决了冲突。现在,需要添加 file2 ,因为此文件有更改。

步骤5.我在master分支中add file2,因为我已解决了此文件上的冲突

步骤6.我现在应该写什么提交消息?仅 msg2 ?或 msg1,msg2,msg3 现在都需要重写? (我不想为我工作的文件丢失提交消息 msg1,msg2,msg3

2 个答案:

答案 0 :(得分:8)

您没有为那些合并的提交编写新的提交消息;您正在为合并提交本身编写提交消息。你的历史将如下所示:

- x - o - o - o (origin/master) - X (master)
   \                             /
    1 - 2 - 3 (sub-branch) ------

您正在撰写的提交消息是X。提交123是祖先,仍在历史记录中,但仍然有提交消息。没有办法改变合并的那些。

X的提交消息,如果您没有冲突,则默认为Merge branch 'sub-branch'。如果你确实有冲突,那么它仍然会作为第一行,但也有一个冲突的文件列表:

 Merge branch 'sub-branch'

 Conflicts:
     file2

这是一个温和的暗示,你已经做了比简单合并更重要的事情 - 你必须做一些手动工作来解决file2中的冲突。如果您愿意,可以添加一个快速说明,说明导致这些冲突的原因以及解决方法。否则,只需按原样使用该消息!请记住,这只是合并(和冲突解决)的描述。您合并的提交有自己的提交消息。

答案 1 :(得分:3)

解决冲突后,git add <conflicted file>当您继续git commit时,它应该为合并和任何已解决的提交提供预建的提交消息。不是吗?其他合并提交不会丢失,您不必重写任何内容。

  1. 提交BranchB
  2. git checkout master
  3. git pull origin master
  4. git merge BranchB
  5. 解决文件中的冲突
  6. git add <conflicted file(2)>
  7. git commit
  8. 步骤7:如果没有参数调用,则应打开默认的提交消息编辑器,其中包含解释合并和解决冲突的正确消息(我相信)