在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。这有什么关系吗?


当前回答

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

其他回答

执行clean命令:

# Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`)

git clean -fd

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

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

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

好吧,我差不多把问题解决了。

看起来。gitattributes文件包含:

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

使项目文件出现非阶段性。我不知道为什么会这样,我真的希望了解git的人会给我们一个很好的解释。

我的修复是删除这些文件,并在.git/config的[core]下添加自专制= false。

这与前面的配置并不完全相同,因为它要求每个开发人员都具有selflf = false。我想找个更好的办法。

编辑:

我注释了那些有罪的句子,然后取消注释,它起作用了。搞什么…我甚至不……!

正如其他答案所指出的,这个问题是因为行尾自动纠错。我在*.svg文件中遇到了这个问题。我使用svg文件图标在我的项目。

为了解决这个问题,我让git知道svg文件应该被视为二进制文件,而不是文本,方法是在.gitattributes中添加下面的行

* .二进制

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