澄清/清除GIT中的行结束问题

时间:2009-10-05 23:37:02

标签: git

我们有一个从subversion导出到git的存储库。此存储库由Mac,Linux和PC用户使用。毋庸置疑,行结尾是一团糟。有些文件以CRLF,LF或CR结尾,有些文件在一个文件中包含所有两个或三个文件。

添加autocrlf = true似乎可以解决一些问题。然而,差异有时会变得相当奇怪,即对文件进行一行编辑会使差异中的所有行都显示出来(我认为是由于文件的行结尾都被重写了),有时一行编辑为文件正常工作。

是否有网站,或者有人可以解释我们如何解决这个问题?是否有我们必须设置的git设置,或者我们是否必须对所有文件进行批量更新以使某一行结束或者是什么?

任何帮助都会非常感激,因为它太乱了!

(以下stackoverflow post似乎有帮助,虽然它没有回答当我们有另一个mac或pc或linux用户提交另一个补丁时会发生什么)

2 个答案:

答案 0 :(得分:5)

我会尽可能地尝试标准化在项目中所有源文件中使用的公共行。一个好的选择可能只是LF,但是我会检查开发人员使用的编辑器是否正确地处理了你所选择的公共行。 (在这种情况下,理智的意思是不要仅仅因为用户改变了一行而改变文件中的每一行。)

您可能需要执行大型清理工作并进行一次大型提交,将所有文件行结尾更改为您选择的标准结尾。这将是尴尬但可能不像维持各种不同的行结尾那样尴尬。

答案 1 :(得分:5)

您将对以下相关的SO问题感兴趣:

Trying to fix line-endings with git filter-branch, but having no luck

这里有a link来自Github的类似建议。

另外,正如Greg Hewgill的帖子中提到的那样,明智的做法是验证未来的提交者是否使用能够正确处理新行结束策略的编辑器。

当你说“添加autocrlf = true似乎可以稍微修复一下”。我假设这是使用.gitattributes完成的。