我在我们的一个存储库中创建了许多分支。这些分支在被提取给主人之前进行测试。现在我在列表中看到很多它们,我们永远不会再使用它。如何将这些分支直接删除到Bitbucket?
答案 0 :(得分:181)
如果分支只是本地分支,如果分支已合并,则可以使用 -d ,例如
git branch -d branch-name
如果分支包含您从未计划合并的代码,请改用 -D 。
如果分支位于上游仓库(在Bitbucket上),您可以通过
删除远程引用git push origin :branch-name
此外,如果您使用的是Bitbucket网站,则可以通过访问网站上提交下的功能分支标签来删除您推送的分支机构。在那里你会找到一个省略号图标。单击该按钮,然后选择删除分支。确保你想要删除所有的更改!
答案 1 :(得分:19)
从Bitbucket删除分支,
答案 2 :(得分:13)
除了@Marcus给出的答案,您现在还可以通过以下方式删除远程分支:
git push [remote-name] --delete [branch-name]
答案 3 :(得分:5)
我可以删除大多数分支,但其中一个看起来像这样,我无法删除它:
原来有人在Branch permissions
下设置了Settings
,并从那里取消选中Allow deleting this branch
。希望这可以帮助别人。
更新:设置位于评论中的问题中。输入您不想编辑的存储库以获取菜单。您可能需要管理员权限才能更改此权限。
答案 4 :(得分:5)
转到左侧菜单中的分支。
答案 5 :(得分:3)
答案 6 :(得分:2)
如果您正在使用pycharm IDE进行开发,并且已经添加了Git。您可以直接从pycharm中删除远程分支。 从工具栏VCS-> Git->分支->选择分支->并删除。 它将从远程git服务器中删除它。
答案 7 :(得分:1)
当我的仓库中的分支数量超过数百时,我已经编写了这个小脚本。我不知道其他方法(使用CLI),所以我决定使用selenium使其自动化。它只是打开Bitbucket网站,转到“分支”,向下滚动到页面的末尾,然后单击每个分支选项菜单->单击“删除”按钮->单击“是”。可以对其进行调整,以保留最后的N个(100个-默认值)分支,并跳过具有特定名称的分支(master,develop-默认值,可以更多)。 如果这适合您,您可以尝试这种方式。
https://github.com/globad/remove-old-branches
您需要做的就是克隆存储库,下载正确版本的Chrome-webdriver,在存储库中输入一些常量(如URL)并运行脚本。
该代码非常简单易懂。如有任何疑问,请写评论/创建问题。
答案 8 :(得分:0)
在 Android Studio 中,IDE右下角的选项:
答案 9 :(得分: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 === 'Create') return;
fetch(`https://bitbucket.org/!api/2.0/repositories/<your_organization_path>/refs/branches/${item.dataset.branchName}`, {headers: {"x-csrftoken": csrf}, credentials: "same-origin", method: 'DELETE'}).then(() => console.log(`${item.innerText} DELETED!`)) }) })
<yourprofilenick>
<your_organization_path>
替换为您的组织路径首先,我们需要页面源中包含CSRF令牌的页面,因此我选择:
https://bitbucket.org/snippets/new?owner=<yourprofilenick>
然后对于每个分支(在分支列表中),它获取CSRF令牌并删除该分支。
记得在回购设置中删除之前阻止敏感分支。
它会删除主分支。
您必须登录。
它只删除该页面上可见的分支(因此要删除其他分支,您必须转到下一页)。
答案 10 :(得分:0)
尝试使用此命令,它将清除已合并到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
答案 11 :(得分:0)
git push <repository> -d <branch>
要获取repository
,请在命令行中输入git remote -v