Answers:
如果分支仅是本地分支,则可以在分支已合并的情况下使用-d,例如
git branch -d branch-name
如果分支包含您从未计划合并的代码,请改用-D。
如果分支位于上游回购(在Bitbucket上),则可以通过以下方式删除远程引用
git push origin :branch-name
另外,如果您在Bitbucket网站上,则可以通过转到网站上“ 提交 ” 下的“ 功能分支”选项卡来删除已推送的分支。在那里您将找到省略号图标。单击该按钮,然后选择“ 删除分支”。只要确保您要放弃所有更改即可!
除了@Marcus给出的答案,您现在还可以通过以下方式删除远程分支:
git push [remote-name] --delete [branch-name]
如果您正在使用pycharm IDE进行开发,并且已经添加了Git。您可以直接从pycharm中删除远程分支。 从工具栏VCS-> Git->分支->选择分支->然后删除。它将从远程git服务器删除它。
当我的回购中的分支数超过数百时,我已经编写了这个小脚本。我不知道其他方法(使用CLI),所以我决定使用selenium使其自动化。它只是打开Bitbucket网站,转到“分支”,向下滚动页面到末尾,然后单击每个分支选项菜单->单击“删除”按钮->单击“是”。可以对其进行调整以保留最后的N个(100个-默认值)分支,并跳过具有特定名称的分支(master,develop-默认值,可以更多)。如果这适合您,您可以尝试这种方式。
https://github.com/globad/remove-old-branches
您所需要做的就是克隆存储库,下载正确版本的Chrome-webdriver,向存储库输入一些常量(例如URL)并运行脚本。
该代码非常简单易懂。如有任何疑问,请写评论/创建问题。
如果您喜欢有趣的话,则可以转到分支机构的列表页面(例如合并),然后在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令牌并删除该分支。
在回购设置中删除之前,请记住防止敏感分支。
它不会删除主分支。
您必须先登录。
它仅删除该页面上可见的分支(因此要删除其余分支,您必须转到下一页)。