偶尔,当我做以下事情时......
git reset --hard
HEAD is now at 0123abde comment is here
git pull
Updating 0123abde..456789fa
我收到了错误......
error: Entry 'filename' not uptodate. Cannot merge.
我找到的唯一解决方法是'git reset --hard',删除有问题的文件,然后执行'git pull'。这对我来说似乎不对。不应该硬重置删除任何和所有本地更改,从而允许我拉出最新的没有任何合并问题?我使用git错了吗? :)
这是在CI计算机上,因此此处的任何更改都是不需要的。我在Windows Vista上使用git版本1.6.1.9.g97c34。
答案 0 :(得分:13)
我遇到了同样的问题,我重命名了导致这个问题的文件,然后做了一个git pull。它删除了丢失的文件并解决了问题。
答案 1 :(得分:11)
“Entry 'filename' not uptodate. Cannot merge.
”背后的一般概念是:
您对工作目录中的文件进行了更改,如果要继续结帐和更改新分支,这些文件将被覆盖,删除或以其他方式丢失。
has been reported此消息可能是“假的”,(可能是因为“git pull
”did not refresh the index在尝试合并之前)但修复程序是在Git1.6.1中。登记/>
但是,它可能仍然在mSysGit 1.6.1中,所以你看到更新的mSysGit版本会出现同样的错误吗? (如1.6.3)
答案 2 :(得分:3)
我找到的最简单的解决方案是:
git add .
git merge --abort
答案 3 :(得分:1)
这也可能由于使用--skip-worktree
或--assume-unchanged
命令而发生,而git阻止您执行以下操作:checkout
,merge
,rebase
或{{1 }}。
如果采用以下方法,则跳过的文件/目录可能不起作用:
pull
git stash
和&git merge --abort
不适用于此命令将抛出的git rm --cached
文件:skipped
检查fatal: pathspec [file] did not match any files
个文件here的解决方案
skipped
如果要删除本地上的$: git update-index --really-refresh
<file>: needs update
或未跟踪的目录/文件,则为可选
skipped
如果以上命令均不能解决问题,则只需从$: git reset --hard
树中撤消该文件,例如:
skipped
如果您$: git update-index --no-skip-worktree [file]
目录,请直接转到here,详细了解如何递归地跳过/撤消操作,例如:
skipped
答案 4 :(得分:0)
我尝试跑步时遇到了同样的问题
git merge --abort
为使其正常工作,我上演了不需要的更改。一旦这样做,git就可以成功撤消它们。
答案 5 :(得分:0)
从假设不变的索引中删除文件,然后尝试签出另一个分支后,可能会发生此错误。 例如,
git checkout master
甚至
git checkout -f master
导致错误:
error: Entry 'gradle/apk.gradle' not uptodate. Cannot merge.
解决方案是使用以下命令将文件返回索引:
git update-index --no-assume-unchanged gradle/apk.gradle
然后,您终于可以正常进行结帐了。