我正在关注一本书中的示例,该书没有显示解决合并冲突的步骤。本教程中提到的本教程对我不起作用 - Simulate multiple users/committer's on local system 所以,我甚至无法学习合并。
以下是从书中复制的步骤 -
现在打开空白participants.txt
文件并在其中粘贴以下行:
(我在每个名字之前加了一个连字符)
Finance team
Charles
Lisa
John
Stacy
Alexander
Git代码 -
git init
git add .
git commit –m 'Initial list for finance team'
使用以下语法创建一个名为marketing的新分支:
git checkout –b marketing
现在打开participants.txt
文件并开始输入财务团队列表下方营销部门的名称,如下所示:
(我在每个名字之前加了一个连字符)
Marketing team
Collins
Linda
Patricia
Morgan
Git代码 -
git add .
git commit –m 'Unfinished list of marketing team'
git checkout master
打开文件并删除名称Alexander和Stacy,保存,关闭,添加更改和提交 使用提交消息来自财务团队的最终列表。
git add .
git commit –m "Final list from Finance team"
git checkout marketing
打开文件并为营销团队添加第五个名称Amanda,保存,添加和提交。
git add .
git commit –m "Initial list of marketing team"
说已经确认输入用于营销的相同名称;现在我们需要合并这两个列表,这可以通过以下命令完成。
git merge master
您将收到合并冲突,如以下屏幕截图所示。解决它们。
Auto-merging participants.txt
CONFLICT (content): Merge conflict in participants.txt
Automatic merge failed; fix conflicts and then commit the result.
如何解决这些冲突?
文件中的文字如下 -
Finance team
-Charles
-Lisa
-John
<<<<<<< HEAD
-Stacy
-Alexander
Marketing team
- Collins
- Linda
- Patricia
- Morgan
- Amanda
=======
>>>>>>> master
答案 0 :(得分:8)
这些是合并标记:
<<<<<<<
Changes made on the branch that is being merged into. In most cases,
this is the branch that I have currently checked out (i.e. HEAD).
|||||||
The common ancestor version.
=======
Changes made on the branch that is being merged in. This is often a
feature/topic branch.
>>>>>>>
如&#34; Fix merge conflicts in Git?&#34;中所述,您应该:
或者您只需查看这些文件即可保留原始版本,例如&#34; How can I discard remote changes and mark a file as “resolved”?&#34;。
如您所见,您从Finance Team
分支marketing
和Stacy
中的Alexander
删除的名称又回来了。
因此,当您将master
合并到marketing
时,git会问您:我们应该保留这些名称还是删除它们?
当Charles Bailey添加in the comments时,似乎缺少(基本)共同祖先部分:
|||||||
The common ancestor version.
=======
你应该使用配置重做练习:
git config merge.conflictStyle diff3
这将有助于可视化3-way merging的基本部分 另请参阅&#34; Why is a 3-way merge advantageous over a 2-way merge?&#34;。
OP adds
确定要在文本文件中保留的内容并删除合并标记
<<<HEAD
和>>>master
后,需要将文件添加到具有git add [filename]
的阶段,然后提交为正常的。
您不能马上执行git merge master
。
再次合并时,OP会报告错误消息:
error: 'merge' is not possible because you have unmerged files.
hint: Fix them up in the work tree,
hint: and then use 'git add/rm <file>' as
hint: appropriate to mark resolution and make a commit,
hint: or use 'git commit -a'.
fatal: Exiting because of an unresolved conflict.
这是解决方案
git add .
git commit - m "success"
git merge master
请参阅&#34; GIT merge error “commit is not possible because you have unmerged files”&#34;。