27

我怎样才能告诉 Git 真的不在乎行尾?将它们保留为 LF 或 CRLF,就像它们最初一样,并以相同的方式检查它们?

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

既然如此,有时他们会在不知情的情况下更改行尾。例如,最近第三方工具对其行尾进行了规范化,以及其他更改。我们的 repo 已使用这些更改进行了更新,现在由于行尾不同,文件显示在我的目录中发生了更改。

对于这个特定的存储库,我真正想要的是让 Git 假装不存在行尾更改。如果是 LF,则保留为 LF。如果是 CRLF,则保留为 CRLF。

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

4

1 回答 1

23

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

该文件应包含以下内容:

# no eol conversions!
* -text

这意味着以下内容:

  • [*]:这是一个文件过滤器,匹配任何文件
  • [-text]:在签入和签出时不要尝试进行任何行尾转换

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

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

另请参阅有关 gitattributes 的 Git 文档(效果:文本)。

于 2015-06-03T21:45:34.673 回答