我遇到了一个问题,Git会在尝试合并时说文件冲突,但是当我去解决冲突时,没有冲突。为什么当本地和远程都相同时,Git认为这是一个冲突?有没有办法让Git自动解决这个问题?
操作系统:Windows 8
Git版本:1.9.5
答案 0 :(得分:4)
文件肯定不一样。
当GIT检测到两个合并分支中的同一行/块以不同方式更改时,会引发冲突消息。 Git并不试图自动解决这种情况,因为解决它们很大程度上取决于文件内容的语义。 Git不知道XML,Java也不知道C#而不是ASN1语法,并且不会尝试学习它们:)这是非常基础的。
然而,对于作为程序员的人来说,一些冲突是“微不足道的”。
这就是为什么你经常使用一些外部合并实用程序,如TortoiseMerge,WinMerge,KDiff3等。那些包含一些不同的算法/启发式,这些碰巧能够自动检测/解决常见的“琐碎”冲突以同样的方式,甚至,简单地忽略为“不重要”,例如:
'class Foobar'
vs 'class Foobar'
vs ' class Foobar'
)其中一些实用程序(尤其是图形工具)可能会向您显示文件“相同”,因为它们的明显的文本内容看起来是相同的,即使原始内容的文件是不同的。这是一个偏好的问题。使用纯代码文件时,如果您的Java或C#文件保存为UTF16或UTF8通常无关紧要 - 您对代码差异感兴趣。你经常不希望看到每一行都被改变只是因为你的同事用CRLF而不是LF结尾来保存它。
但有三个重要的注意事项: