我们有一个从subversion导出到git的存储库.此存储库由Mac,Linux和PC用户使用.毋庸置疑,行结尾是一团糟.有些文件以CRLF,LF或CR结尾,有些文件在一个文件中的所有两个或三个文件之间混合.
添加autocrlf = true似乎稍微解决了一些问题.然而,差异有时会变得相当奇怪,即对文件进行一行编辑会使差异中的所有行都显示出来(我认为这是由于文件的行结尾都被重写了),有时一行编辑为文件正常工作.
有没有一个网站,或者有人可以解释我们如何解决这个问题?是否有我们必须设置的git设置,或者我们是否必须对所有文件进行批量更新以使某一行结束或具有什么?
任何帮助都会非常感激,因为它非常混乱!
(以下stackoverflow文章似乎可能有所帮助,虽然它没有回答当我们有另一个mac或pc或linux用户提交另一个补丁时会发生什么)
我会尽可能地尝试标准化在项目中所有源文件中使用的公共行.一个好的选择可能只是LF,但是我会检查开发人员使用的编辑器是否正确地处理了你所选择的公共行.(在这种情况下,理智的意思是不改变文件中的每一行只是因为用户改变了一行.)
您可能需要执行大型清理工作并进行一次大型提交,将所有文件行结尾更改为您选择的标准结尾.这将是尴尬但可能不像维持各种不同的行结尾那样尴尬.
您将对以下相关SO问题感兴趣:
尝试使用git filter-branch修复行结尾,但没有运气
这里有来自Github的类似建议的链接.
此外,正如Greg Hewgill的帖子中所提到的,验证未来的提交者使用正确处理新行结束策略的编辑器是明智的.
当你说"添加autocrlf = true似乎稍微解决了问题." 我认为这是在使用中完成的.gitattributes.