git reset --hard 后出现了未暂存的更改

407

执行了 git reset --hard 后,git status 会在 Changes not staged for commit: 部分列出文件。

我还尝试了 git reset .git checkout -- .git checkout-index -f -a,但都无济于事。

那么,如何才能摆脱这些未暂存的更改呢?

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

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

另外,我的全局 .gitconfigautocrlf 被设置为 false。这是否有相关性呢?


你是在代码库的根目录下执行这些命令吗?注意 . 代表当前目录,而不是根目录。 - Alexander
1
我确实是从根仓库中进行了这些操作。 - Norswap
你的git版本是什么?你要么犯了一个愚蠢的错误,要么你的版本过旧并且存在漏洞。 - Shahbaz
这是git 1.7.4 msysgit。可能有错误,但命令似乎足够简单,我找不到错误。 - Norswap
同样的问题,我在一台机器上(Windows)添加了 .gitattributes,现在在另一台机器上(Linux),从主仓库pull之后,某些文件出现了修改,即那些具有 eol=crlf 的文件... - szx
显示剩余3条评论
22个回答

0

我遇到的另一种可能是存储库中的某个软件包出现了分离的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)

进入 path/to/package 文件夹,运行 git status 命令应该得到以下结果:
HEAD detached at 7515f05

以下命令应该可以解决此问题,其中master应替换为您的本地分支:

git checkout master

你会收到一条消息,提示你的本地分支将落后于远程分支若干次提交。执行git pull,问题就会迎刃而解!


-3

由于某些原因

git add .

没有生效,但是

$ git add -A

成功了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接