如何删除当前的Git分支?

290

我有一个名为Test_Branch的分支。当我尝试使用推荐方法删除它时,我会得到以下错误信息:

无法删除已检出 '[directory location]' 的分支 'Test_Branch'。

除此之外,我没有得到其他信息。 我可以轻松地删除远程分支,但本地分支无法消失。


如果你执行 git branch,它会显示什么? - coredump
74
在这张图片中,正在发生以下情况:http://www.publicdomainpictures.net/pictures/10000/velka/1210-1240955295Hn8Q.jpg - coredump
git branch 给了我 *Test_Branch master - Bob Wakefield
星号告诉您当前所在的分支,这确认了答案的内容。 - coredump
教程 https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote 可以帮助您解决这个问题。 - Mihai8
重命名分支然后删除它对我有帮助。 - Syed Ahmed Jamil
18个回答

491

切换到其他分支并删除Test_Branch,如下所示:

$ git checkout master
$ git branch -d Test_Branch
如果上面的命令出现错误 - The branch 'Test_Branch' is not fully merged. If you are sure you want to delete it,但你仍然想要删除它,那么你可以使用-D代替-d来强制删除它,方法如下:
$ git branch -D Test_Branch

如果要从远程仓库中删除 Test_Branch,则可执行以下命令:

git push origin --delete Test_Branch

66
“Switching branches”是让我困惑的地方——你发现了!如果你正在使用这个分支,就无法删除它。;-) - SliverNinja - MSFT
12
如果你尝试了几个不同的checkout仍然收到相同的消息,请查看git statusgit branch的输出;如果你正在变基Test_branch,那么简单地检出另一个分支/提交将无法解决这个问题。相反,执行git rebase --abort,然后git checkout --detach,最后执行git branch -D Test_branch - droid
6
越用git越觉得它是“糟糕的”。要跨越的障碍越来越荒谬,特别是当你可能想立刻切换回同一分支时。请注意,"git is terrible" 是对git的讽刺性评价,而非字面意思。 - user949300
如果有人在尝试更改分支时收到以下返回信息怎么办?“error: you need to resolve your current index first”,而他们只是想离开?编辑 - 解决方案:git reset --; git checkout -D [branch_name]。哎呀,终于解决了。 - Paul
我不得不运行 git fetch --prune,因为我已经在远程删除了分支,但在 git branch -a 中使用 git pull 后仍然显示。 - hipokito
git checkout -b main 命令中的 -b 标志用于创建一个新分支。 - Rahul Bali

35

今天遇到了这个问题,切换到另一个分支也没用。原来我的工作树信息已经损坏了,而且有一个与我当前工作目录相同的工作树路径,指向了一个分支 (git worktree list)。我删除了引用它的.git/worktree/文件夹,然后就可以正常使用git branch -d命令了。


1
我认为这个答案应该被接受,因为当我遇到这个错误时,简单的git branch -D解决方案对我来说不起作用 - 错误一直存在。 - Doron Behar

28

我曾遇到类似的问题,只不过坏分支在变基的中间。
git checkout bad_branch && git rebase --abort解决了我的问题。


强制删除对我没有起作用,因为重置基础的损坏是原因。这个解决方案有效。+1。 - undefined
1
这对我来说很有效。如果你之前尝试将其他分支合并到错误的分支,并且忘记了它,即使你没有检出错误的分支,它也会显示你已经检出了错误的分支。在中止合并过程后,可以通过使用-d或-D删除错误的分支。 - undefined

26

您可能已经检出了Test_Branch分支,因此在它是当前分支时不能删除它。请检出另一个分支,然后尝试删除Test_Branch分支。


17
如果您使用 git worktree 创建了多个工作树,则在删除分支之前,您需要运行 git worktree prune

4
更具体地说,你需要使用 git worktree prune - Sergioet
但是首先要了解git prune的作用,它可能会导致数据丢失。 - sesquipedalias
1
与其使用 git worktree prune,我建议使用 git worktree remove <worktree> 来确保您不会删除更多的工作树信息。 如果您有疑问,请阅读此命令输出的文档:git help worktree - Daryl Odnert

12
如果其他答案对你没用,那可能是因为你正在进行一个变基操作。所以你需要完成这个变基或者放弃它:
git rebase --abort

之后,您可以删除该分支。


9
在我的情况下,我有一个二分查找,我猜我没有重置。切换到有问题的分支,运行git bisect reset,然后切换到另一个分支,就可以删除有问题的分支了。

这对我有用。 - undefined

7
在我的情况下,先前分支中存在未提交的更改。我使用了以下命令,然后删除操作成功执行:
git checkout *    
git checkout master
git branch -D <branch name>

5
如果你遇到这个问题,即已经签出并且无法删除分支,并且收到此错误消息:
"error: Cannot delete branch 'issue-123' checked out at ....."
那么请使用以下命令检查当前所在的分支:
git branch
如果您要删除的分支是当前分支,则无法删除。只需切换到主分支、主干分支或任何其他分支,然后尝试删除。
git checkout main or master git branch -d branchname git branch -D branchname git branch -D branchname --force

4

大多数初级程序员面对

无法删除分支 'my-branch-name'

因为他们已经在该分支上。

删除正在工作的分支是不合逻辑的。

只需切换到其他分支,比如masterdev,然后删除您想要的分支:

git checkout dev

git branch -d my-branch-name

使用force delete可能会导致分支丢失,所以不要使用它。


6
大多数初级程序员都能制作比“无法删除分支”更好的错误信息。 - William Entriken
2
虽然公平地说 - 这个消息是“无法删除分支...已检出于...”。 “已检出”是描述“在该分支上”的正确方式。 - JanErikGunnar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接