空合并冲突

时间:2019-11-02 11:23:40

标签: git git-pull

有时候,当我从本地分支机构进行git pull origin master时,我会遇到合并冲突,例如:

<<<<<<HEAD

======

>>>>>>xxxxxx

如何避免这种情况?也许是由于某些空格所致,所以我尝试放置一个包含.gitattributes的{​​{1}}文件,但这并不能解决问题。

1 个答案:

答案 0 :(得分:5)

在这种情况下,您会有空白差异。 Git认为空白差异很重要。 (如果不是这种情况,那么……假设维护一个用Whitespace编写的程序。)

您的评论:

  

...后跟git merge -s recursive -Xignore-space-change origin/master。这行得通,这次我没有任何冲突。

确认冲突仅与空格有关。 -X自变量-我称这些扩展自变量,其中X代表 eXtended )。ignore-space-change告诉Git,合并,如果您的更改和它们的更改(除了空格)相同,那么这并不是真正的冲突。

这四个扩展选项的确切规则在the documentation中进行了描述:

  

ignore-space-change
  ignore-all-space
  ignore-space-at-eol
  ignore-cr-at-eol

     

以指定的空白类型处理的行更改为   为了三路合并而保持不变。空格更改   与其他更改混合在一起的行不会被忽略。也可以看看   git-diff[1] -b-w--ignore-space-at-eol和   --ignore-cr-at-eol

     
      
  • 如果版本仅将空格更改引入到   行,使用我们的版本;

  •   
  • 如果我们的版本引入了空白更改,但它们   版本包含重大更改,版本为   用过;

  •   
  • 否则,合并以常规方式进行。

  •   

请注意,您通常可以更简单地将命令拼写为:

git merge -X ignore-space-change

-s recursive是默认设置,并且origin/master可能已经设置为当前分支master的上游,因此这也是默认设置。

-X及其参数之间的空格是可选的,但我更喜欢使用它。)