【问题标题】:Delete branches in Bitbucket删除 Bitbucket 中的分支
【发布时间】:2013-02-15 12:53:50
【问题描述】:

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

【问题讨论】:

    标签: git bitbucket git-branch


    【解决方案1】:

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

    git branch -d branch-name
    

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

    如果分支位于上游存储库中(在 Bitbucket 上),您可以通过

    删除远程引用
    git push origin :branch-name
    

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

    【讨论】:

    • 如果我运行 'git branch -r',我注意到 BB 没有从服务器中删除分支。它不再显示在 GUI 中,而是显示在 git 服务器上。
    • BitBucket 不允许删除一些分支。
    • 看起来不允许我这样做: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
    【解决方案2】:

    对于从 Bitbucket 中删除分支,

    1. 转到概览(左侧边栏中的您的存储库 > 分支)
    2. 点击分支数量(应该会显示分支列表)
    3. 点击要删除的分支
    4. 点击右上角的 3 个点(合并按钮旁边)。
    5. 如果您有权限,可以选择“删除分支”。

    【讨论】:

    • “概览”在哪里?如果您指的是 Source,我在 ... 下看不到“删除分支”选项
    • 第 1 步应该是“转到您的仓库并点击左侧边栏中的‘分支’。”
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      原来有人在Settings 下设置了Branch permissions,并从那里取消选中Allow deleting this branch。希望这可以帮助某人。

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

      【讨论】:

      • 哪里可以找到“设置”?我必须删除主分支或其中的所有文件。我该怎么做?
      【解决方案5】:

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

      1. 选择您要删除的分支。
      2. 转到操作列,单击三个点 (...) 并选择删除。

      【讨论】:

        【解决方案6】:

        第 1 步:登录 Bitbucket

        第 2 步:在存储库列表中选择您的存储库。

        第 3 步:在左侧菜单中选择分支。

        Step4 : 光标点在分支上单击三个点 (...) 选择删除(见下图)

        【讨论】:

          【解决方案7】:

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

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

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

          代码简单易懂。如果你有任何问题,写 cmets/create an Issue。

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              试试这个命令,它会清除所有已经合并到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
              

              【讨论】:

                【解决方案10】:

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

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

                【讨论】:

                  【解决方案11】:

                  如果你喜欢有趣,那么你可以去你的分支列表页面(例如合并),然后在 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!`)) }) })
                  

                  运行前

                  • 用您的 BitBucket 昵称替换 &lt;yourprofilenick&gt;
                  • 将&lt;your_organization_path&gt; 替换为您的组织路径

                  它是如何工作的

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

                  https://bitbucket.org/snippets/new?owner=&lt;yourprofilenick&gt;

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

                  注意

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

                  它不会删除主分支。

                  附加信息

                  您必须登录。

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

                  【讨论】:

                    【解决方案12】:
                    git push <repository> -d <branch>
                    

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

                    【讨论】:

                      【解决方案13】:

                      在Bitbucket中进入你的项目,点击分支,点击三个点,然后点击delete multiple。

                      此选项用于批量删除。

                      【讨论】:

                        猜你喜欢
                        • 2023-01-16
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2016-02-08
                        • 2021-04-17
                        • 1970-01-01
                        相关资源
                        最近更新 更多