我有一个从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仍会报告更改。
答案 0 :(得分:2)
你可能需要告诉git你的行结束策略。
有关此主题的更多信息,请参阅以下资源
注意:短时间修复需要调整计算机上的core.autocrlf
设置。正确的解决方法是创建.gitattributes
文件,提交它,并将Pull请求发送到您克隆的上游存储库。实际上,它不仅可以解决您的问题,还可以防止新用户在以后遇到同样的问题。
有效的,与C#项目兼容的跨平台.gitattributes
文件 can be found here 的示例。随意从中获得灵感; - )
关于行结尾和Git内部工作的非常详细的博客帖子是 Mind the end of your line 。这非常值得一读。
答案 1 :(得分:1)
这可能与eol(行尾)样式有关,如Github页面“Dealing with line endings”中所述。
我建议:
git config --global core.autocrlf false
git clone https://github.com/user/repo newrepo
看看新的回购是否仍然存在。
有理由core.autocrlf
activated,但它导致的问题比解决的更多。
您可以使用其他设置管理行尾(请参阅this question)。