在我的分支上,我在.gitignore中有一些文件

在另一个分支上,这些文件不是。

我想将不同的分支合并到我的分支中,我不关心这些文件是否不再被忽略。

不幸的是,我得到了这个:

以下未跟踪的工作树文件将被合并覆盖

我如何修改我的pull命令来覆盖这些文件,而不需要我自己找到、移动或删除这些文件?


当前回答

以我为例,当我遇到这个问题时。我在遥控器上重命名了一个本地文件。

当尝试git拉git告诉我新的文件名没有跟踪-它是在远程上,虽然它还不存在于本地。

因为在本地没有实例,我不能做git拉,直到我在旧文件名上做了git rm(这起初并不明显,因为我愚蠢的重命名它的想法)。

其他回答

如果这是一次性操作,那么在执行拉取操作之前,可以从工作目录中删除所有未跟踪的文件。阅读如何从当前Git工作树中删除本地(未跟踪)文件?有关如何删除所有未跟踪的文件的信息。

请确保不要意外删除未跟踪的文件,你仍然需要;)

以我为例,当我遇到这个问题时。我在遥控器上重命名了一个本地文件。

当尝试git拉git告诉我新的文件名没有跟踪-它是在远程上,虽然它还不存在于本地。

因为在本地没有实例,我不能做git拉,直到我在旧文件名上做了git rm(这起初并不明显,因为我愚蠢的重命名它的想法)。

问题是你没有在本地跟踪文件,但是相同的文件被远程跟踪,所以为了“拉”你的系统将被迫覆盖不受版本控制的本地文件。

尝试运行

git add * 
git stash
git pull

这将跟踪所有文件,删除对这些文件的所有本地更改,然后从服务器获取这些文件。

除了接受的答案,你当然可以删除文件,如果他们不再需要通过指定文件:

git clean -f '/path/to/file/'

如果你想知道git clean会删除哪些文件,记得先用-n标志运行它。注意,这些文件将被删除。对我来说,我并不关心他们,所以这对我来说是一个更好的解决方案。

您可以试试这个命令

git clean -df

编辑: 请注意,这将删除可能有价值的未跟踪文件。 感谢@zhekaus