当前位置: 首页 > news >正文

【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-progitfetch = +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

相关文章:

  • Java实现Redis延时队列
  • 【机器学习】是什么?
  • 3.测试教程 - 基础篇
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • AI智能制作ER图技术革新:itBuilder引领数据库设计新篇章
  • 记一次重大的问题解决
  • kali xrdp
  • STM32—触摸键
  • 我们在SqlSugar开发框架中,用到的一些设计模式
  • 光学相干断层扫描(OCT)在 妇科诊断 中的革命性应用
  • 服务器遭受 DDoS 攻击的常见迹象有哪些?
  • C语言—自定义(构造)类型
  • igolang学习3,golang 项目中配置gin的web框架
  • 算法提升——LeetCode第385场周赛总结
  • 端口占用:Web server failed to start. Port XXX was already in use.原因分析-解决方案
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • canvas 高仿 Apple Watch 表盘
  • Java到底能干嘛?
  • Lucene解析 - 基本概念
  • Quartz初级教程
  • Redis学习笔记 - pipline(流水线、管道)
  • spring cloud gateway 源码解析(4)跨域问题处理
  • spring-boot List转Page
  • swift基础之_对象 实例方法 对象方法。
  • vagrant 添加本地 box 安装 laravel homestead
  • 二维平面内的碰撞检测【一】
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 经典排序算法及其 Java 实现
  • 力扣(LeetCode)965
  • 区块链将重新定义世界
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 一文看透浏览器架构
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • !$boo在php中什么意思,php前戏
  • # 达梦数据库知识点
  • #QT项目实战(天气预报)
  • #在 README.md 中生成项目目录结构
  • (1)SpringCloud 整合Python
  • (145)光线追踪距离场柔和阴影
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (九)信息融合方式简介
  • (理论篇)httpmoudle和httphandler一览
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .gitignore文件_Git:.gitignore
  • .net 4.0发布后不能正常显示图片问题
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 流——流的类型体系简单介绍
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .Net7 环境安装配置
  • .net操作Excel出错解决
  • .NET的数据绑定
  • /var/log/cvslog 太大
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?