我有一个名为Test_Branch的分支。当我尝试使用推荐方法删除它时,我得到以下错误:
无法删除在'[目录签出的分支'Test_Branch' 位置]。
除此之外,我没有得到其他信息。我可以轻易地吹走远程分支,但本地分支不会消失。
我有一个名为Test_Branch的分支。当我尝试使用推荐方法删除它时,我得到以下错误:
无法删除在'[目录签出的分支'Test_Branch' 位置]。
除此之外,我没有得到其他信息。我可以轻易地吹走远程分支,但本地分支不会消失。
当前回答
今天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
其他回答
在我的例子中,来自前一个分支的未提交的更改仍然存在。我使用以下命令,然后删除工作。
git checkout *
git checkout master
git branch -D <branch name>
正如其他人提到的,您不能删除您正在工作的当前分支。
在我的例子中,我在Visual Studio中选择了“Test_Branch”,并试图从Sourcetree (Git GUI)中删除“Test_Branch”。并且正在得到下面的错误消息。
无法删除在'[目录签出的分支'Test_Branch' 位置]。
在Visual Studio中切换到不同的分支,并能够从Sourcetree中删除“Test_Branch”。
我希望这能帮助那些正在使用Visual Studio & Sourcetree的人。
也遇到了同样的问题, 签出到不同的分支,使用git branch -D branch_name 为我工作
切换到其他分支并删除Test_Branch,如下所示:
$ git checkout master
$ git branch -d Test_Branch
如果上面的命令给你错误-分支“Test_Branch”没有完全合并。如果你确定你想要删除它,并且仍然想要删除它,那么你可以使用-D来强制删除它,而不是-D,如下所示:
$ git branch -D Test_Branch
要从远程删除Test_Branch,执行:
git push origin --delete Test_Branch
您可能已经签出了Test_Branch,当它是您当前的分支时,您可能无法删除它。签出一个不同的分支,然后尝试删除Test_Branch。