ChatGPT解决这个技术问题 Extra ChatGPT

git checkout master 错误:以下未跟踪的工作树文件将被结帐覆盖

我有一个 git 存储库。它有 ABCDE ... 提交。现在我想将 D 签出为一个名为 Dbranch 的新分支。所以我执行:git checkout D -b Dbranch。现在我想删除这个分支。首先我需要切换到 master 分支,然后使用 git branch -d Dbranch 删除它。但是当我执行 git checkout master 时,它给了我错误。

error: The following untracked working tree files would be overwritten by checkout:
    source/a/foo.c
        ...... (too many lines)
Please move or remove them before you can switch branches.
Aborting

如何删除Dbranch?


B
Benjamin W.

试试 git checkout -f master

-f--force

来源:https://www.kernel.org/pub/software/scm/git/docs/git-checkout.html

切换分支时,即使索引或工作树与 HEAD 不同,也要继续。这用于丢弃本地更改。从索引中检出路径时,不要在未合并的条目上失败;相反,未合并的条目将被忽略。


啊,我的生命得救了!看到切换分支后所有现有文件都被删除,我非常紧张。强制结帐后,我拿回了所有物品。
我遇到了一个问题,我收到“未跟踪的工作树文件”错误,但 git status -u 没有显示任何内容......我不知道如何删除这个神秘的未跟踪文件,但这个命令帮助我暂时避开了这个问题
S
Shengdi Chen

对于 Git 2.23(2019 年 8 月),使用 git switch -f

git switch -f master

这避免了 confusion with git checkout (处理文件或分支)。

即使索引或工作树与 HEAD 不同,此命令也会继续执行。
恢复索引和工作树以匹配切换目标。
如果指定了 --recurse-submodules,则子模块内容也将恢复到匹配切换目标。
这用于丢弃本地更改。


M
Mali

做一个:

git branch

如果 git 向您展示类似的内容:

* (no branch)
master
Dbranch

你有一个“分离的头”。如果您在此分支上修改了一些文件,请提交它们,然后返回到 master

git checkout master 

现在您应该可以删除 Dbranch。