Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
澄清/清理GIT中的行结束问题_Git - Fatal编程技术网

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

澄清/清理GIT中的行结束问题,git,Git,我们有一个从subversion导出到git的存储库。此存储库供Mac、Linux和PC用户使用。不用说,行尾是一团糟。有些文件以CRLF、LF或CR结尾,有些文件混合了两个或三个文件 添加autocrlf=true似乎可以稍微解决一些问题。然而,差异有时会出现相当奇怪的情况,即对文件进行一行编辑会使差异中的所有行都出现更改(我认为这是由于文件的行尾都被重写了),有时对文件进行一行编辑会正常工作 有没有一个网站,或者有人能解释一下我们如何解决这个问题?我们是否必须设置git设置,或者我们必须对所

我们有一个从subversion导出到git的存储库。此存储库供Mac、Linux和PC用户使用。不用说,行尾是一团糟。有些文件以CRLF、LF或CR结尾,有些文件混合了两个或三个文件

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

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

任何帮助都将不胜感激,因为这里乱七八糟


(以下内容可能会有所帮助,尽管它不能回答当我们有另一个mac、pc或linux用户提交另一个补丁时会发生什么情况)

我会尽可能地尝试在一个公共行上进行标准化,以便在项目中的所有源文件中使用。一个好的选择可能是LF-only,但是我会检查开发人员使用的编辑器是否能够正确地处理您选择的公共行结尾。(在这种情况下,sanely意味着不要仅仅因为用户更改了一行而更改文件中的每一行。)


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

这个相关的问题会引起您的兴趣:

下面是来自Github的类似建议

此外,正如Greg Hewgill在文章中提到的,验证未来提交者是否使用能够正确处理新行结束策略的编辑器是明智的


当您说“Adding autocrlf=true似乎可以稍微解决一些问题。”我假设这是在使用中完成的。

因此,第一步:修复存储库中的行尾。第二步:告诉人们使用
git config--global core.autocrlf true
,如果他们不使用它就提交了,那么就狠狠地揍他们一顿?@corydoras:gittributes的妙处在于可以将文件推送到存储库。如果在文件中设置并推送了
core.autocrlf
,那么我认为它应该在任何克隆中强制行结束。但是,我不确定是否需要新的克隆,或者每个提交者是否需要遵循Github上给出的建议。