无法进行 git pull

58

我正在尝试执行 git pull 命令,却收到以下错误消息:

error: The following untracked working tree files would be overwritten by merge:
<myFileName>
Please move or remove them before you can merge.

因此,我尝试使用命令git rm --cache删除文件,结果出现错误:
fatal: pathspec
<myFileName>
did not match any files

此时我卡住了。在删除该文件之前,我无法进行拉取操作。但是,它告诉我无法删除该文件。

我应该怎么做才能解决这个问题?

5个回答

115

这是使用 'git clean' 命令的机会。如果你不关心未被追踪的文件,可以使用 git clean -n 查看将要被删除的内容,然后使用 git clean -f 来删除未被追踪的文件。

在命令中添加 -d 同时也可以对目录进行操作:

  git clean -dn
  git clean -df

1
它真的帮助了我。 :) - Adnan
这确实很有帮助,但是有没有一种方法可以让git直接覆盖文件呢?我有一些我想保留的文件与冲突无关,我不想手动去找到有问题的文件并将它们删除,只是为了让它们被替换。肯定应该有一个“强制拉取”选项或类似的东西吧? - Ben Farmer
1
你可能想要重置你的分支。我相信其他人可以更简洁地解释这个问题,但考虑使用 git reset --hard branch_name 命令。该命令有多种变体,但基本上就是你想要的。一个提示 - 确保准确指定你所指的分支名称。例如,在引发这个问题的情况下,本地分支 X 与远程分支 origin/X 是不同的,因此该命令可能看起来像 git reset --hard origin/my_branch。这告诉你的本地 git 索引“放弃所有正在进行的操作并重置为 origin/my_branch 的 HEAD”。 - troyfolger
你是个天才。非常感谢。 - VIKAS KOHLI

23

在进行pull操作时,有未跟踪的文件阻止了它的进行。无法使用git rm --cached命令来移除这些未跟踪的文件,因为它们没有被追踪,不会出现在索引中。需要使用普通的rm命令来删除它们。


5

那个文件还没有在当前分支中,所以你不能使用 git rm --cache 来删除它。只需使用 rm 命令即可。


如果当前文件有修改,最好只是移动当前文件。因此,使用简单的控制台命令mv来移动文件,或者使用rm来删除该文件。 - abletterer

4

我同意其他评论者的看法,问题在于该文件未被git跟踪。命令git rm用于跟踪文件。rm将从您的计算机中删除文件。或者,如果方便的话,您可以将该文件添加到忽略文件或文件类型列表中。您还可以使用一个GUI工具,例如tortoise git,快速删除所有未跟踪的文件。


2

正如原始错误消息中所说,该文件是未跟踪的。 这意味着git对它一无所知。 只需使用rm从文件系统中删除它。如果您关心其内容,只需将其移到其他位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接