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