git checkout master错误:checkout会覆盖以下未跟踪的工作树文件

时间:2013-08-01 08:44:37

标签: git git-checkout

我有一个git存储库。它有A B C D E ...提交。现在我想结帐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?

3 个答案:

答案 0 :(得分:78)

尝试git checkout -f master

-f--force

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

  

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

     

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

答案 1 :(得分:5)

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

git switch -f master

避免使用confusion with git checkout(用于处理文件或分支)。

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

答案 2 :(得分:0)

做一个:

git branch

如果git给你看的话:

* (no branch)
master
Dbranch

你有一个“独立的HEAD”。 如果您已修改此分支上的某些文件,请提交它们,然后使用

返回到master
git checkout master 

现在你应该可以删除Dbranch了。