在Bitbucket中删除分支

178

我在我们的一个代码库中创建了许多分支。这些分支是为了在合并到主分支之前进行测试的。现在我在列表中看到了很多这样的分支,但它们再也不会被使用了。如何直接在Bitbucket上删除这些分支?

12个回答

283
如果分支只是本地的,您可以使用-d,如果该分支已经合并,例如:
git branch -d branch-name

如果分支包含您不打算合并的代码,请使用-D

如果该分支位于上游repo(在Bitbucket上),则可以通过删除远程引用来移除它:

git push origin :branch-name

此外,如果您在Bitbucket网站上,可以通过转到网站上的“提交”下的“功能分支”选项卡来删除您推送的分支。在那里,您会找到一个省略号图标。点击它,然后选择“删除分支”。请确保您想要放弃所有更改!

enter image description here


3
如果我运行"git branch -r"命令,我注意到BB没有从服务器上删除该分支。虽然它在GUI界面上不再显示,但是在Git服务器上仍然存在。 - jersey bean
1
有一些分支 BitBucket 简单地不允许删除。 - Suncat2000
看起来不允许我:remote: external-pre-receive-hook declined remote: fatal: not a tree object remote: tar: This does not look like a tar archive remote: tar: Exiting with failure status due to previous errors - DonBaka
2
@jerseybean - git remote prune origin 应该会对你有所帮助。虽然我晚了2年,但希望能帮到某些人。 - Styszma

62

在Bitbucket中删除分支的方法:

  1. 进入概述页面(在左侧边栏中选择“你的代码库 > 分支”)
  2. 点击分支数量(这样就能显示分支列表)
  3. 点击要删除的分支
  4. 点击右上角的3个点(Merge按钮旁边)
  5. 如果有权限,将会看到“删除分支”选项。

1
“概览”在哪里?如果您指的是源代码,我在...下看不到“删除分支”的选项。 - niico
10
第一步应该是“进入你的代码库并点击左侧边栏中的'branches'。” - Noumenon

28

除了@Marcus给出的答案外,现在你也可以通过以下方式删除远程分支:

git push [remote-name] --delete [branch-name] 

15

我可以删除大部分的分支,但有一个分支看起来像这样,我无法删除它:

在此输入图片描述

结果发现有人在设置下设置了分支权限并从那里取消勾选了允许删除此分支选项。希望这能对某些人有所帮助。

在此输入图片描述

更新:关于问题评论中的设置位置。进入要编辑的存储库以获取菜单。您可能需要管理员权限才能更改此内容。

在此输入图片描述


“设置”在哪里可以找到?我需要删除主分支或其中的所有文件。我该怎么做? - user9046719
这是在Bitbucket网站上。 - user1315621

14

在左侧菜单中进入 Bitbucket 的分支。

  1. 选择你要删除的分支。
  2. 进入操作列,点击三个圆点 (...) 并选择“删除分支”。

9
Bitbucket 中进入您的项目,点击“分支”,点击三个点并单击删除多个选项。这是用于批量删除的选项。 enter image description here

3
当我的仓库中分支数量超过几百个时,我编写了这个小脚本。我不知道其他方法(使用CLI),所以我决定使用selenium自动化它。它简单地打开Bitbucket网站,进入“分支”,滚动页面到底部,点击每个分支选项菜单-> 点击删除按钮-> 点击是。它可以调整以保留最后的N个(默认为100)分支,并跳过具有特定名称的分支(例如master,develop-默认值,也可以更多)。 如果适合您的需求,可以尝试这种方式。
您需要做的就是克隆存储库,下载正确版本的Chrome-webdriver,输入一些常量,如您的存储库URL并运行脚本。
代码足够简单易懂。如果您有任何问题,请写下评论/创建一个 Issue。 https://github.com/globad/remove-old-branches

2

如果您正在使用Pycharm IDE进行开发,并且已经将Git添加到其中,那么您可以直接从Pycharm中删除远程分支。 从工具栏 VCS-->Git-->Branches-->选择分支-->并删除。 它会从远程Git服务器中删除该分支。


1
尝试使用此命令,它将清除所有已合并到develop分支的分支。
for i in `git branch -r --merged origin/develop| grep origin | grep -v '>' \
   | grep -v master | grep -v develop | sed -E "s|^ *origin/||g"`; \
do \
   git push origin $i --delete; \
done

0
Android Studio中,IDE右下角的选项:
  • 更改/检出其他本地分支
  • 删除不需要的本地分支(例如v0.0.1 ...)
  • 删除不需要的远程分支(例如origin/v0.0.1 ...)--如果未防止删除分支并且它们不是主要分支,则此步骤将从BitBucket中删除分支。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接