在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。这有什么关系吗?
我遇到的另一种可能性是,存储库中的一个包最终具有分离的HEAD。如果这里的答案都没有帮助,你遇到了这样的git状态消息,你可能有同样的问题:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: path/to/package (new commits)
进入路径/to/package文件夹,git状态应该产生以下结果:
HEAD detached at 7515f05
下面的命令应该修复这个问题,master应该被你的本地分支替换:
git checkout master
您将得到一条消息,您的本地分支将在远程分支后面提交一些数量的文件。快点拉,你应该脱离险境了!
好吧,我差不多把问题解决了。
看起来。gitattributes文件包含:
*.sln eol=crlf
*.vcproj eol=crlf
*.vcxproj* eol=crlf
使项目文件出现非阶段性。我不知道为什么会这样,我真的希望了解git的人会给我们一个很好的解释。
我的修复是删除这些文件,并在.git/config的[core]下添加自专制= false。
这与前面的配置并不完全相同,因为它要求每个开发人员都具有selflf = false。我想找个更好的办法。
编辑:
我注释了那些有罪的句子,然后取消注释,它起作用了。搞什么…我甚至不……!
我相信Windows的git有一个问题,git在签出时随机写了错误的行结束符,唯一的解决方法是签出一些其他分支并迫使git忽略更改。然后签出您实际想要处理的分支。
git checkout master -f
git checkout <your branch>
请注意,这将丢弃您可能有意做出的任何更改,因此只有在签出后立即出现此问题时才执行此操作。
编辑:我第一次可能真的很幸运。原来换树枝后我又被咬了。结果是git在更改分支后报告的文件被修改了。(显然是因为git没有始终正确地将CRLF行结束应用到文件中。)
我更新到最新的Windows git,希望这个问题已经解决了。