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

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

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

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

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

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


当前回答

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拉就足够了。

其他回答

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

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

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

尝试运行

git add * 
git stash
git pull

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

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拉就足够了。

一种方法是存储本地更改并从远程回购中提取。这样,你就不会丢失你的本地文件,因为文件会去隐藏。

git add -A
git stash
git pull

你可以使用git stash list这个命令检查你的本地存储文件

您可以尝试命令从本地清除未跟踪的文件

Git 2.11及更新版本:

git clean  -d  -f .

Git的旧版本:

git clean  -d  -f ""

其中-d可以替换为:

-x忽略的文件以及Git不知道的文件也会被删除。 除未跟踪文件外,删除未跟踪目录。 -f命令用于强制运行。

下面的链接也会很有帮助。