我用谷歌搜索了这个主题有几个非常长的主题,但似乎没有一个帮助。我想我做错了什么。
我有一个名为Test_Branch
的分支。当我尝试使用推荐方法删除它时,我收到以下错误:
无法删除在'[目录中]检出的分支'Test_Branch' 位置]”。
除此之外,我没有得到任何其他信息。我可以轻松地吹走远程分支,但本地分支不会消失。
答案 0 :(得分:145)
切换到其他分支并删除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
答案 1 :(得分:18)
您可能已经签出了Test_Branch,并且当它是您当前的分支时,您可能无法将其删除。检查一个不同的分支,然后尝试删除Test_Branch。
答案 2 :(得分:12)
今天进入这个并切换到另一个分支并没有帮助。事实证明,我的工作树信息已经损坏,并且有一个工作树,其工作目录与我的工作目录相同,HEAD
指向分支(git worktree list
)。我删除了引用它并.git/worktree/
工作的git branch -d
文件夹。
答案 3 :(得分:3)
如果您使用git worktree创建了多个工作树,则在删除分支之前,您需要运行git prune
答案 4 :(得分:1)
这对我有用...
我已经删除了.git / worktrees文件夹中的文件夹,然后尝试了“ git delete -D分支名称”。
答案 5 :(得分:0)
就像其他人提到的那样,您不能删除您正在工作的当前分支。
就我而言,我在 Visual Studio 中选择了“ Test_Branch”,并试图从Sourcetree(Git GUI)中删除“ Test_Branch”。并出现以下错误消息。
无法删除在“ [目录”中签出的分支“ Test_Branch” 位置]”。
切换到 Visual Studio 中的其他分支,并能够从Sourcetree中删除“ Test_Branch”。
我希望这对使用 Visual Studio 和 Sourcetree 的人有所帮助。
答案 6 :(得分:0)
在我的情况下,与前一个分支有关的更改尚未落实。我使用了以下命令,然后删除了。
git checkout *
git checkout master
git分支-D
答案 7 :(得分:0)
今天遇到了 git branch -a
报告的分支的这个问题,看起来像这样一个:remotes/coolsnake/dev
,即注册的 git remote add ...
远程中对“远程”分支的本地引用。
当你尝试
git branch -d remotes/coolsnake/dev
您将获得 error: branch 'remotes/coolsnake/dev' not found
。
神奇的是在这里记住这些是引用并且必须通过
删除git update-ref -d remotes/coolsnake/dev
花了一段时间才发现我的错误,只有 TortoiseGit 可以做到这一点,当我陷入困境时才使我走上了正确的道路。尽管有几种不同的方法,谷歌没有提供任何有用的东西。 (不,我已经找到了我需要的东西,还有 git: How to delete a local ref branch?,它没有出现,因为我忘记了关于这些分支是 references 的 'ref' 位。)
希望这有助于其他人在与我在同一条船上时摆脱困境,尝试过滤/有选择地删除存储库中的分支,其中一些分支由于之前的 git remote add
命令而存在。
在 shell 脚本中,这可能如下所示:
#! /bin/bash
#
# Remove GNU/cesanta branches so we cannot accidentally merge or cherrypick from them!
#
# commit hash is first GNU commit
R=218428662e6f8d30a83cf8a89f531553f1156d25
for f in $( git tag -l ; git branch -a ) ; do
echo "$f"
X=$(git merge-base $R "$f" )
#echo "X=[$X]"
if test "$X" = "$R" ; then
echo GNU
git branch -D "$f"
git update-ref -d "refs/$f"
git tag -d "$f"
#git push origin --delete "$f"
else
echo CIVETWEB
fi
done
答案 8 :(得分:0)
大多数初级程序员所面临的
Cannot delete branch 'my-branch-name'
因为他们已经在那个分支上。
删除您已经在处理的分支是不合逻辑的。
只需切换到另一个分支,如 master
或 dev
,然后删除您想要的分支:
git checkout dev
git branch -d my-branch-name
没有force delete
,你可以删除那个分支