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

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

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

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

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

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


当前回答

您可以试试这个命令

git clean -df

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

其他回答

如果文件写在.gitignore下,删除这些文件并再次运行git pull。这帮了我大忙。

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

尝试运行

git add * 
git stash
git pull

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

步骤1:清理工作副本

a)将本地更改保存在Stash上 如果想要保存本地更改,可以安全地将它们存储在Stash上。它们将是可用的,以防你以后想要回来。

$ git stash --include-untracked

b)丢弃局部更改 如果你确定你不再需要它们,你可以完全放弃你的本地更改:

$ git reset --hard

c)如果你也有未跟踪的/新的文件,你将不得不使用“git clean”命令来清除这些文件:

$ git clean -fd

第二步:再拉一次 当你清理了所有可能被覆盖的本地更改/未跟踪的文件后,pull将最终工作:

$ git pull

唯一对我有用的命令是: (请注意,这会删除所有本地文件)

git fetch --all
git reset --hard origin/{{your branch name}}

如果你考虑使用-f标志,你可以先运行它作为一个演练。你只需要提前知道你接下来会遇到什么样有趣的情况;-P

-n 
--dry-run 
    Don’t actually remove anything, just show what would be done.