我正在与一位开发人员合作,他们正在看到一个我以前从未遇到过的奇怪问题。他正在开发一个存储库,需要在推送之前从其他人那里获取最新的更改。他所有的改变都是承诺的。
$ 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)。有任何想法吗?我准备把头发拉出来。
答案 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)
对我来说,问题出在安全文件夹中
仅此命令显示有未暂存的文件
git diff-files --ignore-submodules
取消配置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 --hard
和git checkout
跟进。
还有一个想法是尝试git reset --hard HEAD~N
- 即重置一些提交,并希望拉动工作并快速转发本地。