我周末在家做了一些工作,并使用git将代码更改合并到我的办公室计算机(通过vpn连接),发现了一些非常难看的合并问题。
首先,合并应该非常干净,因为星期五在办公室里已经完成了所有工作,我只在周六和周日对我的家用电脑进行了更改。但是,当我将更改提取到我的办公室计算机时,我最终遇到了大量的合并冲突。
我清理了合并冲突,但后来我发现许多文件(从我可以告诉我周末更改的任何文件)在整个文件中都有<<<<<<< HEAD" and ">>>>>>> D1/master
。例如:
diff --git a/web/Web.Controller/Helpers/FormsAuthentication.cs b/web/Web.Controller/Helpers/FormsAuthentication.cs
index 8571f53..4a9c9fc 100644
-- a/web/Web.Controller/Helpers/FormsAuthentication.cs
++ b/web/Web.Controller/Helpers/FormsAuthentication.cs
@@ -10,7 +10,10 @@
/// </summary>
public class FormsAuthenticationUtility : IAuthenticationUtility
{
<<<<<<< HEAD
=======
>>>>>>> D1/master
#region IAuthentication Members
/// <summary>
我能够使用kdiff
通过与从我的家用计算机复制的源代码进行比较来修复代码,但这似乎完全搞砸了。
任何想法发生了什么?
答案 0 :(得分:4)
当Windows文件合并到我的Linux仓库时,我遇到了同样的问题,因此这是一个CRLF问题。我最终可以在this answer的帮助下解决这个问题。 IIRC必须在合并之前完成,但它已经有一段时间了,老实说我忘了把它写下来......
答案 1 :(得分:1)
由于他们对换行符的不同处理,我从Windows转到* Nix并返回时出现了这样的问题。 Git可能正在接受这些差异,无论出于何种原因未能合并。
也许试试--ignore-space-at-eol
?
修改
合并时,实际 的空白区域很重要。在您的确切情况下可能无关紧要,但有些情况可能会产生影响。 This question似乎要解决应该采取哪些措施来比以往更好地解决冲突。
答案 2 :(得分:1)
这听起来像合并时的CRLF问题:它引发了最近的讨论here。您可能还想尝试使用一些文件构建简化案例,以找出导致此问题的确切原因。