159

我在我们的一个存储库中创建了许多分支。这些分支在被拉到主服务器之前用于测试。现在我在清单上看到了很多,我们再也不会使用它们了。如何将这些分支直接删除到 Bitbucket?

4

14 回答 14

255

如果分支只是本地的,如果分支已合并,则可以使用-d ,例如

git branch -d branch-name

如果分支包含您从未计划合并的代码,请改用-D

如果分支位于上游 repo 中(在 Bitbucket 上),您可以通过以下方式删除远程引用

git push origin :branch-name

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

在此处输入图像描述

于 2013-03-05T16:45:30.787 回答
52

要从 Bitbucket 中删除分支,

  1. 转到概述(您的存储库 >左侧边栏中的分支
  2. 单击分支数(应显示分支列表)
  3. 单击要删除的分支
  4. 在右上角,单击 3 个点(在合并按钮旁边)。
  5. 如果您有权限,可以选择“删除分支”。
于 2015-08-11T09:22:34.483 回答
25

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

git push [remote-name] --delete [branch-name] 
于 2016-07-27T21:47:09.697 回答
14

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

在此处输入图像描述

原来有人在Branch permissions下面Settings和从那里未经检查Allow deleting this branch。希望这可以帮助某人。

在此处输入图像描述

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

在此处输入图像描述

于 2017-02-24T09:16:02.367 回答
12

Bitbucket中转到左侧菜单中的分支。

  1. 选择您要删除的分支。
  2. 转到操作列,单击三个点 (...) 并选择删除。
于 2017-09-20T06:03:25.530 回答
5

第 1 步:登录Bitbucket

第 2 步:在存储库列表中选择您的存储库。 在此处输入图像描述

第 3 步:在左侧菜单中选择分支。 在此处输入图像描述

第4步:分支上的光标点单击三个点(...)选择删除(见下图) 在此处输入图像描述

于 2018-08-04T07:55:27.903 回答
3

当我的仓库中的分支数量超过数百个时,我编写了这个小脚本。我不知道其他方法(使用 CLI),所以我决定使用 selenium 自动化它。它只是打开 Bitbucket 网站,转到分支,将页面向下滚动到最后,然后单击每个分支选项菜单 -> 单击删除按钮 -> 单击是。可以调整它以保留最后 N 个(100 - 默认)分支并跳过具有特定名称的分支(master、develop - 默认,可能更多)。如果这适合您,您可以尝试这种方式。

https://github.com/globad/remove-old-branches

您只需要克隆存储库,下载正确版本的 Chrome-webdriver,输入一些常量,如存储库的 URL 并运行脚本。

代码简单易懂。如果您有任何问题,请写评论/创建问题。

于 2019-06-20T17:22:27.200 回答
2

如果您正在使用 pycharm IDE 进行开发,并且您已经添加了 Git。您可以直接从 pycharm 中删除远程分支。 从工具栏 VCS-->Git-->Branches-->Select branch--> 和 Delete。它将从远程 git 服务器中删除它。

于 2018-09-17T07:35:43.643 回答
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
于 2019-03-27T11:51:32.063 回答
1

Bitbucket中转到您的项目,单击分支,单击三个点,然后单击删除多个

此选项用于批量删除。

在此处输入图像描述

于 2021-09-08T13:00:05.010 回答
0

Android Studio中,IDE 右上角的选项:

  • 更改/结帐其他本地分支
  • 删除不需要的本地分支(即 v0.0.1...)
  • 删除不需要的远程分支(即 origin/v0.0.1...)——如果不阻止删除分支并且它们不是MAIN BRANCH ,则此步骤将删除 BitBucket 中的分支。
于 2015-11-09T23:20:46.653 回答
0

在 bitbucket Web 控制台中,当有活动的拉取请求时,删除分支被禁用。

于 2022-03-04T06:24:18.890 回答
0
git push <repository> -d <branch>

要获取repository, 输入git remote -v命令行

于 2020-08-28T04:36:59.187 回答
0

如果你喜欢有趣,那么你可以去你的分支列表页面(例如合并),然后在 javascript 控制台中运行:

document.querySelectorAll('tr td div a:first-child').forEach(function(item) { fetch('https://bitbucket.org/snippets/new?owner=<yourprofilenick>', {'credentials': 'same-origin'}).then((response) => {return response.text()}).then(function(string) { return /'csrfmiddlewaretoken' value='(.*)'/g.exec(string)[1] }).then(function(csrf) { if (!~item.innerText.indexOf('/')) return; 
 fetch(`https://bitbucket.org/!api/2.0/repositories/<your_organization_path>/refs/branches/${item.innerText}`, {headers: {"x-csrftoken": csrf}, credentials: "same-origin", method: 'DELETE'}).then(() => console.log(`${item.innerText} DELETED!`)) }) })

运行前

  • 替换<yourprofilenick>为您的 BitBucket 昵称
  • 替换<your_organization_path>为您的组织路径

这个怎么运作

首先,我们需要一个在页面源中带有 CSRF 令牌的页面,所以我选择:

https://bitbucket.org/snippets/new?owner=<yourprofilenick>

然后对于每个分支(在分支列表中),它会获取 CSRF 令牌并删除该分支。

谨防

请记住在 repo 设置中删除之前防止敏感分支。

它不会删除主分支。

附加信息

您必须登录。

它只删除该页面上可见的分支(因此要删除其余分支,您必须转到下一页)。

于 2018-06-12T09:58:51.327 回答