git:在文件末尾合并新行的冲突

时间:2011-09-08 22:19:49

标签: git merge-conflict-resolution

我经常在git中提取(合并)文件末尾的换行符差异时会遇到冲突。

冲突看起来像这样:

diff --cc httpdocs/about/faq.php
index 0ae3963,b5eb519..0000000
--- a/httpdocs/about/faq.php
+++ b/httpdocs/about/faq.php
@@@ -212,4 -211,4 +212,8 @@@ $_SESSION['activePage'] = 'about'
        </div><!-- end wrap -->

 -<?php require RESOURCE_PATH."page_elements".SLASH."footer.php"; ?>
++<<<<<<< HEAD
 +<?php require RESOURCE_PATH."page_elements".SLASH."footer.php"; ?>
++=======
++<?php require RESOURCE_PATH."page_elements".SLASH."footer.php"; ?>
++>>>>>>> 564e069cccfad98f818ec878a3b2526fd9430f8a

更糟糕;在我手动解析文件并添加冲突的文件之后,似乎没有任何东西需要提交(与文件的结尾有关),所以当我再次执行拉动时,我会得到完全相同的冲突。任何解决方案?

1 个答案:

答案 0 :(得分:1)

这些差异是由于不同的操作系统对结束一行的内容有不同的看法。

Git通常通过将core.eol的配置值默认为“native”来处理这些问题。但是,如果开发人员由于某种原因没有该设置,或者从Windows提交UNIX风格的文件,反之亦然,那么您可能会遇到这些问题。

最好找到问题的根源并在那里处理它,否则,您可以尝试为core.eol(lf / crlf)设置不同的值,并查看它是否修复了该问题。如果它只发生在特定路径上,而不是整个项目,那么最好为该路径定义一个gitattributes文件。