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

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

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

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

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

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


当前回答

删除所有未跟踪的文件:

git clean  -d  -fx .

警告:这将删除IDE文件和任何有用的文件,只要你不跟踪这些文件。请谨慎使用此命令

其他回答

清洁/重置/硬签出/重基都不适合我。

所以我只是删除了git抱怨的文件*

rm /path/to/files/that/git/complained/about

*我检查了这个文件是否可以通过在一个单独的文件夹中签出一个全新的回购来删除(文件不在那里)

问题是,当我们有传入的更改,将合并未跟踪的文件,git抱怨。这些命令帮助了我:

git clean -dxf
git pull origin master

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

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

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

Git 2.23(2019年第三季度)后的回答不会像Esteis的回答中那样使用旧的、令人困惑的Git checkout命令。

你可以用:

Git开关切换分支 Git恢复恢复文件(如图所示)

So:

安全地删除/覆盖麻烦的文件

当你想合并时:

git switch -f receiving-branch # -f is an alias for --discard-changes.
git merge donor-branch         # merge works

当你想拉的时候:

git switch -f mybranch    # automatically track origin/mybranch
git pull

它避免了:

git清洗危险操作 分离的头像一个git checkout origin/myBranch) 显式的拉,因为git switch有一个猜测模式,相当于git switch -c <branch>——track <remote>/<branch>。这意味着简单的git拉就足够了。

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

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