我用“git checkout -b mybranch”创建了分支。似乎出了点问题,现在我无法使用“git branch -D mybranch”删除它。它说:错误:找不到分支'mybranch'。
6 回答
如果git branch -D
真的不起作用,那么您唯一的选择是避开它并自己编辑 git check-out 的状态。您应该转到签出的根目录(.git
目录所在的位置)和
- 编辑
.git/packed-refs
;如果您看到带有您的分支名称的行,则将其删除 - 查找
.git/refs/heads
以您的分支命名的文件;如果你看到一个,删除它
我曾经git update-ref -d refs/heads/<branch name>
修复过这个问题。据推测,这与 Rup 在所选答案中建议的内容相同,只是它是通过 Git 的 CLI 接口的。
我有同样的问题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>
远程删除。
你完成了。:)
您显然不需要删除不存在的分支。用于git branch
查看分支列表,如果不存在则表示没有分支,无需删除。否则,请确保正确键入名称并且git branch -D
应该可以工作。
尽管如此,您不需要太在意可能仍然存在但无法访问的损坏分支。Git 中的分支实际上是简单的 40 字节文件,因此您无需担心。
我有同样的问题。每当我执行命令时,该分支就在分支列表中git branch
,但我无法删除它。
在我的情况下,解决方案很简单,有点出乎意料:我检查了损坏的分支git checkout broken_branch
(是的,它有效),然后我检查回 master 并......再次执行git branch -D broken_branch
。
如果分支名称包含特殊字符,则需要引用:
$ git branch -D 'ENH-Adding-unit-``julian``-to-``to_datetime``'