2011-03-24 111 views
5

我是Git中的新成员。目前,我遇到这样的情景:合并冲突解决后提交消息的问题

步骤0我在子工作分枝

第1步。我已经加入& COMMITED文件1,文件2,文件3我分枝与分别提交消息msg1,msg2,msg3

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

第3步。我pull origin master更新主分支最新版本的起源代码

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

然后,我在文件2了冲突,

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

步骤5.我add file2在主分支,因为我已经解决了这个文件

步骤6.什么提交消息我现在写的冲突?只有msg2?或者msg1,msg2,msg3现在都需要重写吗? (我不希望松散提交信息MSG1,MSG2,消息3对我工作的文件),一旦你解决冲突和git add <conflicted file>当你去到git commit它应该提供一个预建的提交信息

回答

8

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

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

您正在撰写的提交消息是针对X。提交1,23是祖先,仍在历史中,他们仍然有他们的提交信息。没有办法改变这些合并。

X的提交消息(如果没有冲突)将默认为Merge branch 'sub-branch'之类的内容。如果您有冲突,但它仍然会具有作为第一行,而且其中有冲突的文件列表:

Merge branch 'sub-branch' 

Conflicts: 
    file2 

这是一个温柔的提示,你所做的事情不仅仅是一个更显著简单的合并 - 你必须做一些手动工作来解决file2中的冲突。如果你喜欢,你可以添加一个关于造成这些冲突的原因的简要说明以及如何解决这些冲突。否则,请按原样使用该消息!记住,这只是对合并(和冲突解决)的描述。您合并的提交具有自己的提交消息。

+0

现在,我得到了整个过程,谢谢:) – Mellon 2011-03-25 08:26:59

+0

+1非常好的回答:) – 2011-03-26 06:52:41

3

合并和任何已解决的提交。不是吗?其他合并的提交不会丢失,您不应该重写任何内容。

  1. 提交到BranchB
  2. git checkout master
  3. git pull origin master
  4. git merge BranchB
  5. 解决冲突在文件(S)
  6. git add <conflicted file(2)>
  7. git commit

第7步:如果不叫应PARAMS打开默认犯了一个体面的消息,说明该合并消息的编辑和解决冲突(我相信)

+0

谢谢,我明白了:) – Mellon 2011-03-25 08:27:29