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

无法删除在'[目录签出的分支'Test_Branch' 位置]。

除此之外,我没有得到其他信息。我可以轻易地吹走远程分支,但本地分支不会消失。


当前回答

今天遇到了这个问题,换到另一个分支也没有帮助。结果是我的工作树信息被损坏了,有一个工作树与我的工作目录具有相同的文件夹路径,头部指向分支(git工作树列表)。我删除了引用它的.git/worktree/文件夹,git分支-d工作了。

其他回答

正如其他人提到的,您不能删除您正在工作的当前分支。

在我的例子中,我在Visual Studio中选择了“Test_Branch”,并试图从Sourcetree (Git GUI)中删除“Test_Branch”。并且正在得到下面的错误消息。

无法删除在'[目录签出的分支'Test_Branch' 位置]。

在Visual Studio中切换到不同的分支,并能够从Sourcetree中删除“Test_Branch”。

我希望这能帮助那些正在使用Visual Studio & Sourcetree的人。

如果其他答案对你不起作用, 如果您正在进行重基,也会发生这种情况。 所以要么完成重基要么放弃:

git rebase --abort

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

大多数初级程序员面临的问题

无法删除分支“my-branch-name”

因为它们已经在那根树枝上了。

删除您正在处理的分支是不符合逻辑的。

只需切换到另一个分支,比如master或dev,然后删除你想要的分支:

Git检查开发

Git branch -d my-branch-name

无需强制删除,您可以删除该分支

我有一个类似的问题,除了坏的分支是在rebase中间。 Git checkout bad_branch && Git rebase—abort解决了我的问题。

今天git branch -a报告的分支遇到了这个问题,看起来像这样:remotes/coolsnake/dev,即在注册的git remote add中对“远程”分支的本地引用…遥控器。

当你尝试

git branch -d remotes/coolsnake/dev

你会得到这样的错误:branch 'remotes/coolsnake/dev' not found。

神奇的是要记住,这些是引用,必须删除通过

git update-ref -d remotes/coolsnake/dev

(as https://superuser.com/questions/283309/

我花了一段时间才发现我的错误,只有TortoiseGit可以做到这一点,当我陷入困境时,我才走上了正确的道路。谷歌没有提供任何有用的东西,尽管有几种不同的方法。(不,我已经找到了我需要的东西,还有git:如何删除一个本地引用分支?,这并没有显示,因为我已经忘记了这些分支是引用的“ref”位。)

希望这能帮助其他人摆脱困境,当他们和我在同一条船上时,试图过滤/选择性地删除repo中的一些分支,其中一些由于之前的git远程添加命令而存在。


在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