【Git】 删除远程分支

Git 删除远程分支有以下几种方法

服务端UI工具

Git 的服务端图形化工具主要是 web 端。常用的有 GitHub、Gitea、Gutlab 等。
这些工具都提供了分支管理,可以直接在各服务端找到相关功能,谨慎删除。

客户端UI工具

Git 拥有诸多客户端 UI 工具,如官方自带的 GitUI、Sublim-Merge及各种编辑器(Eclipse、VSCode、Idea等)集成的UI工具等。
这些 UI 工具提供了更加便捷的分支管理功能,能支持分支的删除。

命令行

命令行删除是本文重点阐述的一种方式。

命令通过引用规范从远程服务器上删除

git push origin :dev

因为引用规范(的格式)是 :,所以上述命令把 留空,意味着把远程版本库的 dev 分支定义为空值,也就是删除它。

引用规范

现在想要添加一个远程仓库:

git remote add origin https://github.com/schacon/simplegit-progit
运行上述命令会在你仓库中的 .git/config 文件中添加一个小节, 并在其中指定远程版本库的名称(origin)、URL 和一个用于获取操作的 引用规范(refspec):

[remote "origin"]
	url = https://github.com/schacon/simplegit-progit
	fetch = +refs/heads/*:refs/remotes/origin/*

引用规范的格式由一个可选的 + 号和紧随其后的 : 组成, 其中 是一个模式(pattern),代表远程版本库中的引用; 是本地跟踪的远程引用的位置。 + 号告诉 Git 即使在不能快进的情况下也要(强制)更新引用。

默认情况下,引用规范由 git remote add origin 命令自动生成, Git 获取服务器中 refs/heads/ 下面的所有引用,并将它写入到本地的 refs/remotes/origin/ 中。 所以,如果服务器上有一个 master 分支,你可以在本地通过下面任意一种方式来访问该分支上的提交记录:

git log origin/master
git log remotes/origin/master
git log refs/remotes/origin/master

上面的三个命令作用相同,因为 Git 会把它们都扩展成 refs/remotes/origin/master。

更多引用规范请参考:GIT 内部原理-引用规范

git push 语法
或者你可以使用更新的语法(自 Git v1.7.0 以后可用)

git push origin --delete dev

使用 JGit 删除

private static void deleteRemoteBranch(CredentialsProvider credentialsProvider, Git git) throws GitAPIException {
        String deleteBranch = "dev";
        RefSpec refSpec = new RefSpec()
                .setSource(null)
                .setDestination("refs/heads/" + deleteBranch);
         
        Iterable<PushResult> results = git.push()
                .setCredentialsProvider(credentialsProvider)
                .setRemote("origin")
                .setRefSpecs(refSpec)
                .call();

        // 处理推送结果
        for (PushResult result : results) {
            for (RemoteRefUpdate update : result.getRemoteUpdates()) {
                System.out.println("Status: " + update.getStatus());
            }
        }
    }

以上代码摘自 【JGit】分支管理实践
其原理是使用了通过引用规范从远程服务器上删除,即git push origin :dev

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值