在我的分支上,我在.gitignore中有一些文件
在另一个分支上,这些文件不是。
我想将不同的分支合并到我的分支中,我不关心这些文件是否不再被忽略。
不幸的是,我得到了这个:
以下未跟踪的工作树文件将被合并覆盖
我如何修改我的pull命令来覆盖这些文件,而不需要我自己找到、移动或删除这些文件?
在我的分支上,我在.gitignore中有一些文件
在另一个分支上,这些文件不是。
我想将不同的分支合并到我的分支中,我不关心这些文件是否不再被忽略。
不幸的是,我得到了这个:
以下未跟踪的工作树文件将被合并覆盖
我如何修改我的pull命令来覆盖这些文件,而不需要我自己找到、移动或删除这些文件?
当前回答
如果你考虑使用-f标志,你可以先运行它作为一个演练。你只需要提前知道你接下来会遇到什么样有趣的情况;-P
-n
--dry-run
Don’t actually remove anything, just show what would be done.
其他回答
除了接受的答案,你当然可以删除文件,如果他们不再需要通过指定文件:
git clean -f '/path/to/file/'
如果你想知道git clean会删除哪些文件,记得先用-n标志运行它。注意,这些文件将被删除。对我来说,我并不关心他们,所以这对我来说是一个更好的解决方案。
以我为例,当我遇到这个问题时。我在遥控器上重命名了一个本地文件。
当尝试git拉git告诉我新的文件名没有跟踪-它是在远程上,虽然它还不存在于本地。
因为在本地没有实例,我不能做git拉,直到我在旧文件名上做了git rm(这起初并不明显,因为我愚蠢的重命名它的想法)。
如果这是一次性操作,那么在执行拉取操作之前,可以从工作目录中删除所有未跟踪的文件。阅读如何从当前Git工作树中删除本地(未跟踪)文件?有关如何删除所有未跟踪的文件的信息。
请确保不要意外删除未跟踪的文件,你仍然需要;)
问题是,当我们有传入的更改,将合并未跟踪的文件,git抱怨。这些命令帮助了我:
git clean -dxf
git pull origin master
步骤1:清理工作副本
a)将本地更改保存在Stash上 如果想要保存本地更改,可以安全地将它们存储在Stash上。它们将是可用的,以防你以后想要回来。
$ git stash --include-untracked
b)丢弃局部更改 如果你确定你不再需要它们,你可以完全放弃你的本地更改:
$ git reset --hard
c)如果你也有未跟踪的/新的文件,你将不得不使用“git clean”命令来清除这些文件:
$ git clean -fd
第二步:再拉一次 当你清理了所有可能被覆盖的本地更改/未跟踪的文件后,pull将最终工作:
$ git pull