在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):隐藏未提交的文件,然后进行硬重置。

其他回答

环境:Visual Studio 2019 + git + Azure DevOps。

行为

在尝试硬复位后遇到这种情况,但我的不是由于行结束。

Git在执行一些命令时挂起;换句话说,它永远不会回到命令提示符。它将显示给定命令中的文件已被处理,但它不会完成命令的所有“阶段”。

以Git克隆为例:

解决方案

创建一个新的个人访问令牌PAT

与我现有的PAT有关的安全/凭据问题,但我找不到任何日志告诉我它失败了。

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

看起来。gitattributes文件包含:

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

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

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

这与前面的配置并不完全相同,因为它要求每个开发人员都具有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

您将得到一条消息,您的本地分支将在远程分支后面提交一些数量的文件。快点拉,你应该脱离险境了!

另一个原因可能是不区分大小写的文件系统。如果你的repo中有多个文件夹在同一层上,它们的名称只是大小写不同,你就会遇到这种情况。使用其web界面(例如GitHub或VSTS)浏览源存储库以确保。

欲了解更多信息:https://stackoverflow.com/a/2016426/67824

Git不会重置不在存储库中的文件。所以,你可以:

$ git add .
$ git reset --hard

这将执行所有更改,这将使Git知道这些文件,然后重置它们。

如果这不起作用,你可以尝试隐藏并删除你的更改:

$ git stash
$ git stash drop