无法拉动b / c“您有未分级的更改”,但状态显示没有更改

时间:2012-12-03 21:53:36

标签: git

我正在与一位开发人员合作,他们正在看到一个我以前从未遇到过的奇怪问题。他正在开发一个存储库,需要在推送之前从其他人那里获取最新的更改。他所有的改变都是承诺的。

$ git pull
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.

这直到......

$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 3 and 1 different commit each, respectively.
#
nothing to commit (working directory clean)

说什么?

我在拉动之前尝试过git reset --hard HEAD,但拉动仍然失败。

只有一个人看到了这个,他在Mac上(OSX 10.6.8)。有任何想法吗?我准备把头发拉出来。

6 个答案:

答案 0 :(得分:20)

而不是

git pull

git fetch
git rebase -p origin/master

如果这不起作用,您可以尝试

git pull --no-rebase

如何检查此消息发生的原因

确保你在一个树枝上,而不是一个独立的头。重新定位不适用于分离头。

运行以下命令,结果应该是无输出。

git update-index -q --ignore-submodules --refresh
git diff-files --ignore-submodules
git diff-index --cached --ignore-submodules HEAD --

答案 1 :(得分:7)

您是在使用本地文件系统还是nfs共享?

当我在nfs share上工作时,我遇到了完全相同的问题。

我在noatime命令中添加了mount选项,它有所帮助:

mount -t nfs -o noatime,... device dir

答案 2 :(得分:0)

你可以试试$ git stash然后尝试git pull。

答案 3 :(得分:0)

对我来说,问题出在安全文件夹中

  1. 仅此命令显示有未暂存的文件

    git diff-files --ignore-submodules
    
  2. 取消配置git-crypt并在工作树中重新加密文件

    git-crypt lock
    

答案 4 :(得分:0)

当我尝试重新建立root拥有的存储库(并且我是非特权用户)时遇到了这个问题。

答案 5 :(得分:-1)

看起来可能正在进行改造。首先尝试运行git rebase --abort

清除本地的更有力的方法包括

  • 删除工作目录中的所有文件(当然不包括.git目录)

  • git clean -d -x -f-d:目录,-x:忽略文件,-f:强制。将-f替换为-n干跑)

然后使用git reset --hardgit checkout跟进。

还有一个想法是尝试git reset --hard HEAD~N - 即重置一些提交,并希望拉动工作并快速转发本地。