有没有一种方法可以在不进行克隆或任何其他形式的本地复制的情况下从Git存储库中删除分支?
基本上,我正在为发布流水线设计仪表板,不想在仪表板服务器上拥有任何工作项目的代码,只是为了删除已部署的特性分支。
如果有关系的话,我们使用Atlassian Bitbucket(即Stash),而不是Github。
我想做类似于以下操作:
git branch -D ssh://git@repository.com/team/project/feature/deleteme
有没有一种方法可以在不进行克隆或任何其他形式的本地复制的情况下从Git存储库中删除分支?
基本上,我正在为发布流水线设计仪表板,不想在仪表板服务器上拥有任何工作项目的代码,只是为了删除已部署的特性分支。
如果有关系的话,我们使用Atlassian Bitbucket(即Stash),而不是Github。
我想做类似于以下操作:
git branch -D ssh://git@repository.com/team/project/feature/deleteme
从任何 Git 仓库轻松获取
git push <repository url> +:refs/heads/branchname
如果你没有Git仓库可用,那么可以使用git init deleteme
在任何地方创建一个垃圾仓库。
有些仓库管理员因为不信任开发者的删除操作而关闭了通过推送删除的权限,因此有些仓库会拒绝这个命令,但这个功能是默认开启的。
+
,但这是一般文档:“推送空的 <src> 允许您从远程存储库中删除 <dst> 引用”(参见:https://git-scm.com/docs/git-push#:~:text=githooks%5B5%5D.-,Pushing%20an%20empty,-%3Csrc%3E%20allows%20you) - haridsv您可以使用 Stash REST API (分支工具)。您需要向类似以下URL的地址发送经过身份验证的(详见链接)DELETE
请求:
/rest/branch-utils/1.0/projects/{projectKey}/repos/{repositorySlug}/branches
使用参数name
指定要删除的分支,还可以使用(可选的?)参数dryRun
,根据其名称判断它实际上不会应用更改,但会生成一个响应,好像更改已经应用。
请求可以由几乎任何能够进行身份验证的东西发出。例如,curl
可以这样做。
如果Stash网页界面没有选项,您将不得不编写一个自定义的git客户端,可能使用jgit来完成此操作。
STASH-3347
是一个已实现的功能请求,似乎与此相关。 - D-side