【问题标题】:Git delete branch without cloning?Git删除分支而不克隆?
【发布时间】:2015-08-06 21:37:15
【问题描述】:

有没有一种方法可以在不进行克隆或任何其他类型的本地复制的情况下从 Git 存储库中删除分支?

基本上,我正在为发布管道开发仪表板,并且不想为了删除已部署的功能分支而在仪表板服务器上拥有任何工作项目的代码。

如果重要的话,我们使用 Atlassian Stash 而不是 Github。

我想做类似的事情:

git branch -D ssh://git@repository.com/team/project/feature/deleteme

【问题讨论】:

  • 不能完全称它为重复,但here's a similar question and a good answer that covers your case just as well。 UPD:啊,也没有本地副本。那么我相信答案是,除非 Stash 在其网页界面中有这个选项。
  • 我看到了,问题是,如果您没有项目的本地克隆,这将不起作用。
  • 如果您没有本地克隆,则与该存储库交互的唯一方法是 Stash Web 界面。 STASH-3347 是一个似乎相关的已完成功能请求。
  • 或者您实际上需要一个 shell 命令以编程方式执行此操作?
  • 好吧,也许是时候看看 js-git 或类似的东西了。稍微开放一下,以防万一有人想出什么办法:D

标签: git bitbucket-server


【解决方案1】:

简单,从任何 git repo

git push u://r/l +:refs/heads/branchname

如果你手边没有一个,只需在任何地方制作一个垃圾箱,例如git init deleteme.

一些不得不向不可靠的开发人员授予推送访问权限的 repo 管理员已经关闭了 delete-by-push 访问权限,因此一些 repo 会拒绝该命令,但默认情况下它是启用的。

【讨论】:

  • keyboard-to-editbox 警告,我在借来的机器上,没有可用的 git。
  • 这应该如何工作?抱歉,之前没看过
  • git init then, get add remote, 然后做上面的?
  • 无需添加远程,直接使用URL即可。
  • 完美,终于发现 u://r/l 是把实际 URL 放在那里的提示。尝试了命令行,当然可以享受。非常感谢。
【解决方案2】:

您可以使用Stash REST API (branch utils)。您需要将经过身份验证的(请参阅链接了解详细信息)DELETE-request 发送到如下 URL:

/rest/branch-utils/1.0/projects/{projectKey}/repos/{repositorySlug}/branches

...带有参数name 指定要删除的分支和(可选?)dryRun,从名称来看,实际上并没有应用更改,但会导致响应,好像更改是已申请。

几乎任何能够进行身份验证的东西都可以发出请求。例如,curl 可以做到这一点。

【讨论】:

    【解决方案3】:

    如果 Stash Web 界面没有选项,您必须编写一个自定义 git 客户端,可能使用 jgit 来执行此操作。

    【讨论】:

      猜你喜欢
      • 2021-06-26
      • 2017-06-17
      • 2019-10-30
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多