使用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
以确保不删除