在git中什么是<<<< HEAD代表什么?

时间:2013-09-15 13:27:59

标签: git

mohamed: 2:31
msaid: 2:41
<<<<<<< HEAD
mohamed: 2:52
=======
msaid: 2:55
>>>>>>> msaid_test/test

这是将分支与主分支合并后的最终产品。

这是合并前主分支中文件的内容:

mohamed: 2:31
msaid: 2:41
mohamed: 2:52

这是msaid_test / test分支中文件的内容:

mohamed: 2:31
msaid: 2:41
msaid: 2:55

我试图学习如何使用Sourcetree和Bitbucket来解决冲突,为什么会出现这些线? <<<<<<< HEAD>>>>>>> msaid_test/test。什么是解决冲突的正确方法?

4 个答案:

答案 0 :(得分:5)

content common to both branches
<<<<<<< HEAD
content only in HEAD, aka the master branch
=======
content only in other_branch
>>>>>>> other_branch
content common to both branches

字符串<<<<<<< HEAD=======>>>>>>> other_branch只是表示每个分支中存在哪些文字的标记。您可以自行获取此信息并编辑文件以确定正确的版本。这可能包括删除标记,通常包括选择一组内容或另一组。有时你会选择写一些新内容,或以其他方式合并更改。

答案 1 :(得分:4)

是冲突的情况。也就是说,您的主分支包含mohamed: 2:52作为第三行,文件包含msaid: 2:55<<<<<<< HEAD表示冲突代码的开始,>>>>>>> msaid_test/test表示结束。您可以根据需要编辑代码来解决问题。然后再把它推给你的主人。

答案 2 :(得分:3)

假设您要从test合并到master

mohamed: 2:31  # unchanged stuff
msaid: 2:41  # unchanged stuff
<<<<<<< HEAD  # HEAD = last commit of the current branch (master)
mohamed: 2:52  # stuff from master that is not in test
=======
msaid: 2:55  # stuff from test that is not in master
>>>>>>> msaid_test/test

只需将文件编辑为最终应该如何显示。

答案 3 :(得分:3)

E.g。你已经将B分支合并到A分支,但遇到了一些冲突,然后git会用这种方式标记它们:

<<< HEAD&amp;之间的内容===是A(目标分支)的来源,以及===和&之间的内容。 >>> B是B的来源。您需要自己手动修复此冲突。

假设你想保留B的来源,那么你需要删除

>>> HEAD
content
===

否则,删除另一部分

===
content
<<< B

修复所有冲突后,提交源。

注意:finally资源不应包含这些标记。你应该管理它们。