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

Fei*_*Xue 40 git git-checkout

我有一个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
Run Code Online (Sandbox Code Playgroud)

如何删除Dbranch?

dek*_*dev 105

试试git checkout -f master.

-f 要么 --force

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

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

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

  • 啊,我救了我一命!看到分支切换后我所有的现有文件都被删除了,我感到非常紧张。强制结帐后,我已取回所有物品。 (2认同)

Von*_*onC 25

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

git switch -f master
Run Code Online (Sandbox Code Playgroud)

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

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


Mal*_*ali -2

做一个:

git branch
Run Code Online (Sandbox Code Playgroud)

如果 git 向你显示类似的内容:

* (no branch)
master
Dbranch
Run Code Online (Sandbox Code Playgroud)

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

git checkout master 
Run Code Online (Sandbox Code Playgroud)

现在您应该能够删除 Dbranch。