使用Git删除本地分支

使用Git删除本地分支,git,Git,我在谷歌上搜索过,在这个话题上有好几条很长的线索,但似乎没有一条有用。我想我做错了什么。 我有一个分支叫做Test\u分支。当我尝试使用“推荐”方法删除它时,出现以下错误: 无法删除在“[目录]签出的分支“测试分支” 位置]” 除此之外,我没有其他信息。我可以轻松地吹走远程分支,但本地分支不会消失。切换到其他分支并删除测试分支,如下所示: $ git checkout master $ git branch -d Test_Branch 如果上述命令给出错误-分支“Test\u branch”

我在谷歌上搜索过,在这个话题上有好几条很长的线索,但似乎没有一条有用。我想我做错了什么。 我有一个分支叫做
Test\u分支
。当我尝试使用“推荐”方法删除它时,出现以下错误:

无法删除在“[目录]签出的分支“测试分支” 位置]”


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

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

$ git checkout master
$ git branch -d Test_Branch
如果上述命令给出错误-
分支“Test\u branch”未完全合并。如果您确定要删除它,但仍要删除它,则可以使用
-D
而不是
-D强制删除它,如下所示:

$ git branch -D Test_Branch
要同时从远程删除
测试分支
,请执行:

git push origin --delete Test_Branch

您可能已签出Test_分支,并且在它是当前分支时不能删除它。请签出其他分支,然后尝试删除Test_分支。

今天遇到此问题,切换到其他分支没有帮助。结果证明,不知何故,我的工作树信息已损坏,并且有一个与我的工作目录具有相同文件夹路径的工作树,其
指向分支(
git worktree list
)。我删除了引用它的
.git/worktree/
文件夹,并且
git branch-d
工作。

如果您使用创建了多个工作树,您需要运行
git prune
,然后才能删除分支。

这对我来说很有效。。。

我已经删除了.git/worktrees文件夹中的文件夹,然后尝试了“git delete-D branch name”。

与前面提到的其他人一样,您无法删除当前正在工作的分支

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

无法删除在“[目录]签出的分支“测试分支” 位置]”

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


我希望这对使用Visual Studio的人有所帮助&Sourcetree

在我的例子中,上一个分支的未提交更改仍然存在。我使用以下命令,然后删除工作

git签出*

git签出主机


git branch-D

今天遇到了这个问题,由git branch-a
报告的分支如下:
remotes/coolsnake/dev
,即注册的
git remote add…
remotes中对“remote”分支的本地引用

当你尝试

git branch -d remotes/coolsnake/dev
您将得到
错误:未找到分支“remotes/coolsnake/dev”

这里的神奇之处在于要记住,这些都是引用,必须通过

git update-ref -d remotes/coolsnake/dev
(根据)

我花了一段时间才发现我的错误,只有乌龟能做到这一点,当我陷入困境时,我才走上了正确的道路。尽管有几种不同的方法,谷歌并没有提供任何有用的东西。(不,我已经找到了我需要的,还有,它没有出现,因为我忘记了这些分支是引用的'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

大多数初级程序员

无法删除分支机构“我的分支机构名称”

因为他们已经在那个分支上了

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

只需切换到另一个分支,如
master
dev
,然后删除所需的分支:

git签出开发人员

git分行-d我的分行名称


如果不使用强制删除,您可以删除该分支

顺便说一句,我对Git完全陌生。只在过去几天使用过。参加了几门在线课程,读了几本书,答案似乎也不存在。如果你执行
git branch
,它会说什么?在图片中,发生了这样的事情:git branch给我*Test_branch master星星告诉你你目前在哪个分支,这证实了答案所说的切换分支是什么让我-好的捕获!如果分支处于活动状态,则无法删除该分支。;-)如果您尝试了几个不同的签出,但仍然得到相同的消息,请查看
git status
git branch
的输出;如果您正在重新设置Test_分支的基址,那么仅仅签出另一个分支/提交并不能解决这个问题。相反,
git-rebase--abort
然后
git-checkout--detach
,最后
git-branch-D Test\u branch
进一步证明git代表“git很糟糕”。我用得越多,你就越需要跳过这些可笑的圈圈。尤其是当你可能想切换回同一个分支时。如果有人在尝试更改分支时得到了回报,该怎么办<代码>错误:您需要首先解析当前索引
,而他们只是想离开?编辑-解决方案:
git重置--
git checkout-D[branch\u name]
Phew..不得不运行
git fetch--prune
,因为我已经在remote上删除了这个分支,但是在
git branch-a
git pull
之后它仍然显示出来。更具体地说,您需要使用
git worktree prune
,但是请阅读git prune的功能,首先-可能导致数据丢失与使用
git-worktree-prune
相比,我建议使用
git-worktree-remove
以确保不删除