【问题标题】:git line endings seem to result in lots of files changedgit 行尾似乎导致大量文件更改
【发布时间】:2019-04-11 11:08:14
【问题描述】:

我在 git 中看到了一些关于此的帖子,但到目前为止似乎没有一个答案。

我遇到以下问题。每次我成功执行git fetch/git merge 时,我都会看到 git 列出的许多文件以某种方式进行了修改。有些是未暂存的,而另一些是未跟踪或未提交的。

因此,即使我没有更改它们,但当我执行 git fetchgit merge 时,它们会显示为以某种方式被修改。

这是一个问题,如果我提交并推送我的更改,所有这些文件都会显示为我修改过的,这是错误的。

我正在使用 MacBook 进行开发,但其他开发团队可能正在使用 Windows。所以,作为第一个罪魁祸首,我可以认为是行尾。我检查了我的 Mac,git config core.autocrlf 显示 input,据我所知应该在 Mac 上。

在Windows上检查,将git config core.autocrlf显示为true,根据我的理解也是正确的。

所以,假设上面的设置是正确的,行尾应该不是问题,但我不知道如何确认。

另外,我不知道如何解决这个问题,我没有以任何方式修改过的文件在我执行git fetchgit merge 之后显示为已修改而没有任何冲突。

所以,我的问题是

如何确认行尾是否是导致此问题的罪魁祸首?

如何解决这个问题?

更新

看起来不仅基于文本的文件(如 cs、txt、xml 等)而且二进制文件(如 png 文件)都被标记为已修改。那么,问题不在于行尾 IMO 还是?

【问题讨论】:

  • 您是否在使用多个平台的团队中工作?
  • 是的,但我不认为这是由行尾引起的。根据我上面的解释,应该正确设置行尾,至少在我的 Windows 和我的 Mac 上。此外,我注意到 png 文件也被视为被 git 修改,因此不应该是导致它的行尾。

标签: git line-endings


【解决方案1】:

我真的建议将 core.autocrlf 设置为 false

git config --global core.autocrlf false

该设置会更改 所有 文件(包括二进制文件)的 eol,这是不好的。

然后,since Git 2.16: git add --renormalize .。然后检查您是否更改了文件。

【讨论】:

  • 嘿,谢谢。你介意详细说明一下吗。现在我正在工作中并且有一些我已经更改但没有推送到远程的文件,所以我很担心要改变它。
  • @pixel 首先提交您的更改(并且只有您的更改),确保 eol 已经是正确的。推。然后您可以设置该配置并再次克隆您的存储库,以检查没有文件被“自动”修改。
  • @pixel 另请参阅同一主题 stackoverflow.com/a/20168775/6309stackoverflow.com/a/44224929/6309。关于细粒度的细节:stackoverflow.com/a/17628353/6309
猜你喜欢
  • 2016-05-14
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多