有时候,当我做下面的事情时...
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。
7条答案
按热度按时间wgeznvg71#
我找到的解决这个问题的最简单的方法是:
lawou6xi2#
我遇到了同样的问题,我重命名了导致这个问题的文件,并做了一个git pull。它提取了丢失的文件并修复了问题。
yqyhoc1h3#
“
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)
在Git 2.30.1(2021年第一季度)之前,“
git stash
”(man)在稀疏检出的工作树中无法正常工作。参见commit ba359fd,commit b34ab4a,commit a31e48d(01 Dec 2020)by Elijah Newren (
newren
)。(由Junio C Hamano --
gitster
--合并至commit 62fb47a,2021年1月15日)t7012
:添加一个测试用例,演示在稀疏 checkout 中隐藏应用错误签字人:伊莱贾·纽伦
在稀疏 checkout 中应用隐藏,特别是当用于定义稀疏性的模式在创建隐藏时和应用它时发生变化时,有许多错误。
主要的问题是,有时只部分应用了隐藏。
在大多数这种情况下,它会默默地执行此操作,不显示任何警告或错误,并且退出状态为0。
但是,在少数情况下,会显示未翻译的错误消息,并且stash应用程序会提前中止。
第一种情况是,尽管设置了
SKIP_WORKTREE
位,但仍存在文件,在这种情况下,显示的错误消息为:另一种情况是当stash包含要添加到工作树的新文件时;在这种情况下,代码提前中止,但仍然部分应用了stash,并显示以下错误消息:
34gzjxbg4#
这也可能是由于使用
--skip-worktree
或--assume-unchanged
命令而发生的,而git阻止您执行以下操作:checkout
、merge
、rebase
或pull
。如果我们使用以下方法,跳过的文件/目录可能不起作用:
git stash
git merge --abort
,&git rm --cached
这也不适用于此命令将抛出的skipped
文件:fatal: pathspec [file] did not match any files
代替检查
skipped
文件here的解决方案如果要删除本地目录中的
skipped
或未跟踪的目录/文件,则此选项为可选选项如果上述命令都不能解决问题,您只需从
skipped
树中撤消文件,例如:如果你
skipped
目录,只需转到here以了解如何递归地跳过/撤销,例如:krugob8w5#
当我试着逃跑的时候也遇到了同样的问题
为了让它工作,我上演了我不想要的变化。一旦我这样做了,git就能够成功地撤销它们。
uubf1zoe6#
在使用assume-unchanged从索引中删除文件,然后尝试 checkout 另一个分支后,可能会发生此错误。比如说
甚至
导致错误:
解决方案是将文件返回到索引,并使用:
然后,您可以最终进行正常的结账。
6ovsh4lw7#
当我在一个稀疏检出的git仓库中尝试
git merge --abort
时,我遇到了同样的问题,没有一个解决方案对我有效。相反,我做了(假设我在分支my_branch
上)