有时候,当我从本地分支机构进行git pull origin master
时,我会遇到合并冲突,例如:
<<<<<<HEAD
======
>>>>>>xxxxxx
如何避免这种情况?也许是由于某些空格所致,所以我尝试放置一个包含.gitattributes
的{{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
及其参数之间的空格是可选的,但我更喜欢使用它。)