5

我是 Git 新手。目前,我正在经历这种情况:

第 0 步。我正在处理一个分支

第 1 步。我在我的子分支上添加并提交了 file1、file2、file3,分别带有提交消息msg1、msg2、msg3

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

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

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

然后,我在file2中遇到了冲突,

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

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

第 6 步:我现在应该写什么提交信息?只有味精2 ?还是msg1、msg2、msg3现在都需要重写?(我不想丢失我工作的文件的提交消息msg1、msg2、msg3 )

4

2 回答 2

9

您不会为这些合并的提交编写新的提交消息;您正在为合并提交本身编写提交消息。您的历史记录将如下所示:

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

您正在编写的提交消息是针对X. 提交1, 2, 和3是祖先,仍然在历史中,并且他们仍然有他们的提交信息。没有办法通过合并来改变那些。

X如果您没有冲突,则的提交消息将默认为Merge branch 'sub-branch'. 如果您确实有冲突,它仍然会将其作为第一行,而且还会列出有冲突的文件:

 Merge branch 'sub-branch'

 Conflicts:
     file2

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

于 2011-03-24T18:38:33.727 回答
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

第 7 步:如果在没有参数的情况下调用应该打开默认的提交消息编辑器,其中包含一个体面的消息,解释合并和解决的冲突(我相信)

于 2011-03-24T15:50:17.590 回答