23

有时,当我执行以下操作时...

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。

4

6 回答 6

33

我发现这个问题最简单的解决方案是:

git add .
git merge --abort
于 2018-12-20T14:18:32.340 回答
21

我遇到了同样的问题,我重命名了导致此问题的文件并执行了 git pull。它提取了那个丢失的文件并解决了这个问题。

于 2016-10-26T17:32:51.087 回答
14

“”背后的总体思路Entry 'filename' not uptodate. Cannot merge.是:

如果要继续签出和更改到新分支,您对工作目录中的文件所做的更改将被覆盖、删除或以其他方式丢失。

报道,此消息有时可能是“虚假的”(可能是因为“ git pull”在尝试合并之前没有刷新索引),但修复是在 Git1.6.1 中。
但是,它可能仍然存在于 mSysGit 1.6.1 中,那么您是否看到与更新的 mSysGit 版本相同的错误?(如 1.6.3)


在 Git 2.30.1(2021 年第一季度)之前,“ git stashman在稀疏签出的工作树中效果不佳。

请参阅Elijah Newren ( ) 的提交 ba359fd提交 b34ab4a提交 a31e48d(2020 年 12 月 1 日(由Junio C Hamano 合并 -- --62fb47a 提交中,2021 年 1 月 15 日)newren
gitster

t7012:添加一个测试用例,演示在稀疏结帐中隐藏应用错误

签字人:以利亚·纽伦

在稀疏结帐中应用存储,特别是当用于定义稀疏性的模式在创建存储和应用存储之间发生变化时,会有许多错误。

主要问题是有时仅部分应用了存储。

在大多数此类情况下,它会默默地执行此操作,而不会显示任何警告或错误,并且退出状态为 0。

但是,在少数情况下会显示未翻译的错误消息并且存储应用程序会提前中止。

第一种是尽管设置了位,但仍有文件存在SKIP_WORKTREE,在这种情况下,显示的错误消息是:

error: Entry 'PATHNAME' not uptodate. Cannot merge.

另一种情况是当存储包含要添加到工作树的新文件时;在这种情况下,代码提前中止但仍部分应用了存储,并显示以下错误消息:

error: NEWFILE: does not exist and --remove not passed
fatal: Unable to process path NEWFILE
于 2009-05-18T17:04:31.037 回答
8

这也可能由于使用--skip-worktreeor命令而发生,--assume-unchanged并且 git 阻止您执行:checkout、或.mergerebasepull

如果我们采用以下方法,跳过的文件/目录可能不起作用:

  • git stash
  • git merge --abort, &
  • git rm --cached这也不适用于skipped该命令将抛出的文件:fatal: pathspec [file] did not match any files而是

在此处检查skipped文件的解决方案

$: git update-index --really-refresh
<file>: needs update

如果要删除skipped本地目录或未跟踪的目录/文件,则可选

$: git reset --hard

如果上述命令都不能解决问题,您只需从skipped树中撤消文件,例如:

$: git update-index --no-skip-worktree [file]

如果您skipped是目录,请转到此处详细了解如何递归地跳过/撤消,例如:

find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --skip-worktree" \;
于 2019-11-25T06:24:42.687 回答
4

我在尝试跑步时遇到了同样的问题

git merge --abort

为了让它发挥作用,我进行了我不想要的更改。一旦我这样做了,git就能够成功地撤消它们。

于 2018-11-30T14:59:38.337 回答
1

在使用假设未更改的索引中删除文件然后尝试签出另一个分支后,可能会发生此错误。例如,

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

然后,您最终可以进行正常结帐。

于 2020-06-25T19:15:12.913 回答