在git重置后——很难,git状态给了我在Changes not staging for commit:部分中的文件。

我也试过git reset ., git checkout。而git check - out-index -f -a,毫无用处。

那么,我怎样才能摆脱这些未分阶段的变化呢?

这似乎只影响Visual Studio项目文件。奇怪。请看这个粘贴:http://pastebin.com/eFZwPn9Z。这些文件的特殊之处在于,在.gitattributes中我有:

*.sln        eol=crlf
*.vcproj     eol=crlf
*.vcxproj*   eol=crlf

另外,在我的全局.gitconfig中,selflf被设置为false。这有什么关系吗?


当前回答

我也遇到了同样的问题,这与.gitattributes文件有关。 但是,在.gitattributes中没有指定导致问题的文件类型。

我可以通过简单的跑步来解决这个问题

git rm .gitattributes
git add -A
git reset --hard

其他回答

检查你的.gitattributes。

在我的情况下,我有*.js文本eol=lf在它和git选项核心。独裁者说得对。

它给我带来的情况,当git自动转换我的文件行结束,并阻止我修复它,甚至git重置-硬头没有做任何事情。

我修复了它与注释*.js文本eol=lf在我的.gitattributes和取消注释它之后。

看起来就像变魔术了。

类似的问题,虽然我确定只是表面上的。不管怎样,它可能会帮助某些人:我所做的(FWIW,在SourceTree):隐藏未提交的文件,然后进行硬重置。

我已经通过以下步骤解决了这个问题

从Git的索引中删除每个文件。 Git rm——cached -r。 重写Git索引以获取所有新的行结束符。 Git重置——很难

解决方案是配置Git处理行结束部分描述的步骤的一部分

如果其他答案不工作,尝试添加文件,然后重置

$ git add -A
$ git reset --hard

在我的情况下,这有助于当有一堆空文件,git正在跟踪。

这些方法都不适合我,唯一的解决方案是核整个回购和重新克隆它。这包括存储,重置,添加然后重置,clrf设置,大小写敏感性等。叹息……