【发布时间】:2013-02-15 12:53:50
【问题描述】:
我在我们的一个存储库中创建了许多分支。这些分支在被拉到主服务器之前用于测试。现在我在名单上看到了很多,我们永远不会再使用它了。如何将这些分支直接删除到 Bitbucket?
【问题讨论】:
标签: git bitbucket git-branch
我在我们的一个存储库中创建了许多分支。这些分支在被拉到主服务器之前用于测试。现在我在名单上看到了很多,我们永远不会再使用它了。如何将这些分支直接删除到 Bitbucket?
【问题讨论】:
标签: git bitbucket git-branch
【讨论】:
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
对于从 Bitbucket 中删除分支,
【讨论】:
除了@Marcus 给出的答案之外,您现在还可以通过以下方式删除远程分支:
git push [remote-name] --delete [branch-name]
【讨论】:
在 Bitbucket 中转到左侧菜单中的分支。
【讨论】:
当我的仓库中的分支数量超过数百个时,我编写了这个小脚本。我不知道其他方法(使用 CLI),所以我决定使用 selenium 自动化它。它只是打开 Bitbucket 网站,转到分支,将页面向下滚动到最后,然后单击每个分支选项菜单 -> 单击删除按钮 -> 单击是。可以调整它以保留最后 N 个(100 - 默认)分支并跳过具有特定名称的分支(master、develop - 默认,可能更多)。 如果这适合您,您可以尝试这种方式。
https://github.com/globad/remove-old-branches
您只需要克隆存储库,下载正确版本的 Chrome-webdriver,输入一些常量,例如存储库的 URL,然后运行脚本。
代码简单易懂。如果你有任何问题,写 cmets/create an Issue。
【讨论】:
如果您使用 pycharm IDE 进行开发,并且您已经添加了 Git。您可以直接从 pycharm 中删除远程分支。 从工具栏 VCS-->Git-->Branches-->选择分支-->并删除。 它将从远程 git 服务器中删除它。
【讨论】:
试试这个命令,它会清除所有已经合并到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
【讨论】:
在 Android Studio 中,IDE 右上角的选项:
【讨论】:
如果你喜欢有趣,那么你可以去你的分支列表页面(例如合并),然后在 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>
<your_organization_path> 替换为您的组织路径首先我们需要一个在页面源中带有 CSRF 令牌的页面,所以我选择:
https://bitbucket.org/snippets/new?owner=<yourprofilenick>
然后对于每个分支(在分支列表中),它会获取 CSRF 令牌并删除该分支。
请记住,在 repo 设置中删除之前防止敏感分支。
它不会删除主分支。
您必须登录。
它只删除该页面上可见的分支(因此要删除其余分支,您必须转到下一页)。
【讨论】:
git push <repository> -d <branch>
要获取repository,请在命令行中输入git remote -v
【讨论】: