27

我用“git checkout -b mybranch”创建了分支。似乎出了点问题,现在我无法使用“git branch -D mybranch”删除它。它说:错误:找不到分支'mybranch'。

4

6 回答 6

61

如果git branch -D真的不起作用,那么您唯一的选择是避开它并自己编辑 git check-out 的状态。您应该转到签出的根目录(.git目录所在的位置)和

  1. 编辑.git/packed-refs;如果您看到带有您的分支名称的行,则将其删除
  2. 查找.git/refs/heads以您的分支命名的文件;如果你看到一个,删除它
于 2012-06-15T12:44:34.993 回答
8

我曾经git update-ref -d refs/heads/<branch name>修复过这个问题。据推测,这与 Rup 在所选答案中建议的内容相同,只是它是通过 Git 的 CLI 接口的。

于 2015-10-30T01:05:21.270 回答
2

我有同样的问题git branch -d <branch_name>没有工作,我没有找到任何东西.git/packed-refs.git/refs/heads但我有文件

.git/refs/remotes/origin

使用我无法在本地和远程删除的分支名称。但是在删除了branch_name我想删除的文件后,它没有在本地显示。

在远程使用时删除它

git fetch -p origin

-p--prune选项告诉在获取之前,删除远程不再存在的任何远程跟踪引用。然后使用命令

git push origin :<branch_name_you_was_unable_to_delete>

远程删除。

你完成了。:)

于 2017-01-02T13:23:15.580 回答
1

您显然不需要删除不存在的分支。用于git branch查看分支列表,如果不存在则表示没有分支,无需删除。否则,请确保正确键入名称并且git branch -D应该可以工作。

尽管如此,您不需要太在意可能仍然存在但无法访问的损坏分支。Git 中的分支实际上是简单的 40 字节文件,因此您无需担心。

于 2012-06-14T08:35:07.933 回答
1

我有同样的问题。每当我执行命令时,该分支就在分支列表中git branch,但我无法删除它。

在我的情况下,解决方案很简单,有点出乎意料:我检查了损坏的分支git checkout broken_branch(是的,它有效),然后我检查回 master 并......再次执行git branch -D broken_branch

于 2015-11-25T12:05:49.250 回答
1

如果分支名称包含特殊字符,则需要引用:

$ git branch -D 'ENH-Adding-unit-``julian``-to-``to_datetime``'
于 2016-05-06T05:43:47.750 回答