93

我有一个 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?

4

3 回答 3

235

试试git checkout -f master

-f或者--force

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

切换分支时,即使索引或工作树与 HEAD 不同,也要继续。这用于丢弃本地更改。

从索引中检出路径时,不要在未合并的条目上失败;相反,未合并的条目将被忽略。

于 2013-11-04T23:00:34.490 回答
30

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

git switch -f master

这避免了git checkout(处理文件或分支)的混淆。

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

于 2019-09-23T21:36:40.803 回答
-1

做一个:

git branch

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

* (no branch)
master
Dbranch

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

git checkout master 

现在您应该可以删除 Dbranch。

于 2013-08-01T09:12:15.173 回答