我怎样才能让Git真正*忽略*行结尾?

时间:2014-03-19 17:10:49

标签: git tfs line-endings git-tf

我怎么能告诉Git真的不关心行结尾?将它们保留为原来的LF或CRLF,并以同样的方式检查它们?

我正在使用带git-tf的Git存储库来签入TFS存储库。我团队的其他成员只使用TFS。

在这种情况下,有时他们会在不知情的情况下改变行结尾。例如,最近第三方工具将其行结尾标准化,以及其他变化。我们的repo已经更新了这些更改,现在由于行结尾不同,文件显示在我的目录中有更改。

对于这个特定的存储库,我真正想要的是让Git假装行结束变更不存在。如果是LF,请将其保留为LF。如果是CRLF,请将其保留为CRLF。

为了做到这一点,我需要哪些设置或设置组合?

2 个答案:

答案 0 :(得分:18)

供将来参考:实现此目的最稳定的方法是使用在git存储库的根目录中提交的 .gitattributes 文件。

此文件应包含以下内容:

# no eol conversions!
* -text

这意味着以下内容:

  • [*]:这是一个文件过滤器并匹配任何文件
  • [ - text]:办理入住和退房手续时不要尝试进行任何行尾转换

注意:使用" text = auto"意味着:在签出文件上使用原生行尾格式(对于看起来像文本的任何东西)并将其存储为" LF"内部。

这很强大,因为克隆存储库的每个人都将使用相同的设置。 (使用core.autocrlf时不是这种情况。)

另见Git documentation on gitattributes(效果:文字)。

答案 1 :(得分:0)

也许你正在寻找这个

git config --global core.autocrlf false