在我的分支上,我在.gitignore中有一些文件
在另一个分支上,这些文件不是。
我想将不同的分支合并到我的分支中,我不关心这些文件是否不再被忽略。
不幸的是,我得到了这个:
以下未跟踪的工作树文件将被合并覆盖
我如何修改我的pull命令来覆盖这些文件,而不需要我自己找到、移动或删除这些文件?
在我的分支上,我在.gitignore中有一些文件
在另一个分支上,这些文件不是。
我想将不同的分支合并到我的分支中,我不关心这些文件是否不再被忽略。
不幸的是,我得到了这个:
以下未跟踪的工作树文件将被合并覆盖
我如何修改我的pull命令来覆盖这些文件,而不需要我自己找到、移动或删除这些文件?
当前回答
以我为例,当我遇到这个问题时。我在遥控器上重命名了一个本地文件。
当尝试git拉git告诉我新的文件名没有跟踪-它是在远程上,虽然它还不存在于本地。
因为在本地没有实例,我不能做git拉,直到我在旧文件名上做了git rm(这起初并不明显,因为我愚蠢的重命名它的想法)。
其他回答
步骤1:清理工作副本
a)将本地更改保存在Stash上 如果想要保存本地更改,可以安全地将它们存储在Stash上。它们将是可用的,以防你以后想要回来。
$ git stash --include-untracked
b)丢弃局部更改 如果你确定你不再需要它们,你可以完全放弃你的本地更改:
$ git reset --hard
c)如果你也有未跟踪的/新的文件,你将不得不使用“git clean”命令来清除这些文件:
$ git clean -fd
第二步:再拉一次 当你清理了所有可能被覆盖的本地更改/未跟踪的文件后,pull将最终工作:
$ git pull
以我为例,当我遇到这个问题时。我在遥控器上重命名了一个本地文件。
当尝试git拉git告诉我新的文件名没有跟踪-它是在远程上,虽然它还不存在于本地。
因为在本地没有实例,我不能做git拉,直到我在旧文件名上做了git rm(这起初并不明显,因为我愚蠢的重命名它的想法)。
删除所有未跟踪的文件:
git clean -d -fx .
警告:这将删除IDE文件和任何有用的文件,只要你不跟踪这些文件。请谨慎使用此命令
您可以尝试命令从本地清除未跟踪的文件
Git 2.11及更新版本:
git clean -d -f .
Git的旧版本:
git clean -d -f ""
其中-d可以替换为:
-x忽略的文件以及Git不知道的文件也会被删除。 除未跟踪文件外,删除未跟踪目录。 -f命令用于强制运行。
下面的链接也会很有帮助。
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拉就足够了。