用Git删除一个本地分支

我在谷歌上搜索过,关于这个话题有几个很长的帖子,但似乎没有一个有用。我想我做错了什么。 我有一个名为Test_Branch的分支。当我尝试使用推荐方法删除它时,我得到以下错误:

不能删除'Test_Branch'在'[目录签出的分支 位置]。< / p >

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

324676 次浏览

切换到其他分支并删除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,你仍然想删除它,那么你可以强制删除它使用__ABC1而不是-d,如下:

$ git branch -D Test_Branch

要从远程删除Test_Branch,执行:

git push origin --delete Test_Branch

您可能已经签出了Test_Branch,当它是您当前的分支时,您可能无法删除它。签出一个不同的分支,然后尝试删除Test_Branch。

今天遇到了这个问题,换到另一个分支也没有帮助。原来我的工作树信息已经被损坏,并且有一个工作树与我的工作目录具有相同的文件夹路径,其中HEAD指向分支(git worktree list)。我删除了引用它的.git/worktree/文件夹,并且git branch -d工作了。

如果你已经用git worktree创建了多个工作树,你需要在删除分支之前运行git prune

这对我很有用…
我已经删除了。git/worktrees文件夹中的文件夹,然后尝试“git delete -D branch-name”

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

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

不能删除'Test_Branch'在'[目录签出的分支 位置]。< / p >

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

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

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

git checkout *
git checkout master
git branch -D <branch name>

今天在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

(根据https://superuser.com/questions/283309/how-to-delete-the-git-reference-refs-original-refs-heads-master/351085#351085)

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

希望这能帮助其他人摆脱困境,当他们和我在同一条船上时,试图过滤/选择性地删除repo中的一些分支,其中一些是由于以前的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

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

Cannot delete branch 'my-branch-name'

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

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

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

git checkout dev

git branch -d my-branch-name

如果没有force delete,你可以删除这个分支

如果你遇到这个问题,你已经签出,不能删除分支,并得到这个错误消息

错误:无法删除“issue-123”分支.....;

然后通过使用检查您当前所在的分支 git分支< / p >

如果要删除的分支是当前分支,则不能删除相同的分支。只要切换到主或主或任何其他分支,然后尝试删除

Git主签或主签

git branch -d branchname git branch -D branchname git branch -D branchname——force

遇到了同样的问题, 检出到不同的分支并使用git branch -D branch_name 为我工作

我有一个类似的问题,除了在rebase中间的坏分支。
git checkout bad_branch && git rebase --abort解决了我的问题
git branch --D branch-name

请运行此代码删除