我是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 )
答案 0 :(得分:8)
您没有为那些合并的提交编写新的提交消息;您正在为合并提交本身编写提交消息。你的历史将如下所示:
- 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
中的冲突。如果您愿意,可以添加一个快速说明,说明导致这些冲突的原因以及解决方法。否则,只需按原样使用该消息!请记住,这只是合并(和冲突解决)的描述。您合并的提交有自己的提交消息。
答案 1 :(得分:3)
解决冲突后,git add <conflicted file>
当您继续git commit
时,它应该为合并和任何已解决的提交提供预建的提交消息。不是吗?其他合并提交不会丢失,您不必重写任何内容。
git checkout master
git pull origin master
git merge BranchB
git add <conflicted file(2)>
git commit
步骤7:如果没有参数调用,则应打开默认的提交消息编辑器,其中包含解释合并和解决冲突的正确消息(我相信)