2

我有一个从 GitHub 克隆的存储库,我对文件 A 进行了更改,但是 Git 正在检测对文件 B、C 和 D 的更改。所有三个文件都检测到这些更改基本上是 B、C、D 的全部内容。即+B、C、D 中的所有行,-B、C、D 中的所有行。

我不想提交这个,因为它会导致一个肮脏的提交。为什么 git 会检测到这些更改以及如何让 git 永远忽略这些更改?

该项目使用 C#,我使用 GitHub windows 应用程序,IDE 是 VS Express 2012。

编辑: 我意识到文件已经改变,但是有没有办法a)找出改变了什么,b)告诉git忽略它们并且在提交之间不要再次拾取它们。在我第一次打开克隆项目后,我的编辑器似乎正在以某种方式修改文件 B、C、D。

即使在运行 git reset --hard 之后,git diff 仍然会报告更改。

4

2 回答 2

2

你可能需要告诉 git 你的行结束策略。

有关此主题的更多信息,请参阅以下资源

注意:短期修复需要调整core.autocrlf计算机上的设置。正确的解决方法是创建一个.gitattributes文件,提交它,然后向您克隆的上游存储库发送一个拉取请求。事实上,它不仅可以解决您的问题,还可以防止新用户以后遇到同样的问题。

可以在此处找到一个有效的、C# 项目兼容的跨平台.gitattributes文件示例。随意从中获得一些灵感;-)

一篇关于行尾和 Git 内部工作的非常详细的博客文章是Mind the end of your line。非常值得一读。

于 2012-11-07T06:26:20.037 回答
1

这可能与 eol(行尾)样式有关,如 Github 页面“处理行尾”中所述。

我会推荐:

git config --global core.autocrlf false
git clone https://github.com/user/repo newrepo

看看在那个新的回购中问题是否仍然存在。

core.autocrlf激活是有原因的,但它导致的问题多于解决的问题。
您可以使用其他设置管理行尾(请参阅此问题)。

于 2012-11-07T06:23:50.030 回答