[教程]使用 Git 克隆指定分支
Git 是我们开发过程中经常使用到的版本管理工具,在平常情况下我们从远程克隆的时候会将整个库克隆下来,这会包括整个版本库的历史提交记录和远程库里的所有分支。但在一些情况下,比如我们并不需要查看历史提交记录而只是希望能够获取到最新的代码;或者我们只希望克隆某个指定分支时,而不是克隆全部的远程分支,此时我们就可以用到一些选项来减少我们的仓库的体积从而提高生产效率。
通过-b branch_name 选项Git 克隆指定分支
当我们没有通过 -b 选项指定分支时,Git 会默认会在本地创建一个 master/main分支并关联到远程的主干分支上,但如果我们希望创建的本地分支关联的不是主干分支时,我们就可以通过-b 选项来指定我们追踪的远程分支名称如:
# 指定克隆远程分支 `/develop/branch_1## 标题`
> git clone -b /develop/branch_1 git@www.gitee.com/ghimi/hello.git
-b选项搭配 --single-branch 选项只克隆指定分支
通过这种方式克隆远程仓库除了指定的远程分支不是主干分支以外,还是会将远程的所有分支都拉取下来,并不能够起到减小克隆仓库体积的功能。
# 指定克隆远程分支 `/develop/branch_1`
> git clone -b /develop/branch_1 git@www.gitee.com/ghimi/hello.git
> cd hello
# 进入仓库,通过 git branch -r 查看可以看到还是拉取到了全部远程分支
> git branch -r
origin/20200113-function-concurrency-test
origin/20210112_8457548_basic2
origin/HEAD -> origin/master
origin/acl_retrofit
origin/add_api_for_get_organizations
如果想要只克隆指定分支还需要搭配 --single-branch 选项,这样我们就只会拉取到我们指定的分支,而不会拉取到其他远程分支了
# 指定克隆远程分支 `/develop/branch_1`
> git clone -b /develop/branch_1 --single-branch git@www.gitee.com/ghimi/hello
> cd hello
# 进入仓库,通过 git branch -r 当前就只剩下一个分支了
> git branch -r
/origin/develop/branch_1
通过 --depth <depth> 选项指定历史记录的深度
在一些情况下导致仓库体积过大的原因并不是分支太多,而是单个分支下的提交记录过多,我们在一些情况下只想查看分支的最新提交的代码,此时我们可以--depth 1 实现浅克隆,此时我们拉取的代码就是最新一次提交后的代码快照。
# 指定克隆远程分支 `/develop/branch_1`
> git clone -b /develop/branch_1 --depth 1 git@www.gitee.com/ghimi/hello
> cd hello
# 进入仓库,通过 git branch -r 当前只有一个分支了
> git branch -r
/origin/develop/branch_1
# 通过 git log 查看历史提交记录,发现只剩下最后一次的提交记录,而无法看到历史的提交记录
> git log
commit 75bdec69e39ea85fcdc750ef289ece7e76d2b79c (grafted, HEAD -> develop/branch_1, origin/develop/branch_1)
Author: ghimi
Date: Fri Mar 3 15:01:36 2023 +0800
Merge commit 'fc3fe2a0002fc394696ec131797038707f5f4864' into /develop/branch_2
在指定了 --depth 选项后,就无需再指定 --single-branch 选项了。因为浅克隆模式默认隐含了 --single-branch 选项,如果想要在 --depth 选项的基础上还拉取其他分支的代码,可以通过添加 --no-single-branch 选项,此时会拉取到全部远程分支的对应的最近一次的提交记录。
# 指定克隆远程分支 `/develop/branch_1`
> git clone -b /develop/branch_1 --depth 1 --no-single-branch git@www.gitee.com/ghimi/hello.git
> cd hello
# 进入仓库,通过 git branch -r 可以看到拉取到了全部远程分支
> git branch -r
origin/develop/branch_1
origin/20200113-function-concurrency-test
origin/20210112_8457548_basic2
origin/HEAD -> origin/master
origin/acl_retrofit
origin/add_api_for_get_organizations
# 通过 git log 查看历史提交记录,发现只剩下最后一次的提交记录,而无法看到历史的提交记录
> git log
commit 75bdec69e39ea85fcdc750ef289ece7e76d2b79c (grafted, HEAD -> develop/branch_1, origin/develop/branch_1)
Author: ghimi
Date: Fri Mar 3 15:01:36 2023 +0800
Merge commit 'fc3fe2a0002fc394696ec131797038707f5f4864' into /develop/branch_2
通过 git fetch --unshallow 恢复全部的历史提交记录
我们在使用 --depth 1 查看到了当前代码后,如果想要追溯代码的历史提交记录时,可以用 git fetch --unshallow 命令重新拉取指定远程分支的全部历史记录。
# 指定克隆远程分支 `/develop/branch_1`
> git clone -b /develop/branch_1 --depth 1 git@www.gitee.com/ghimi/hello
> cd hello
# 进入仓库,通过 git branch -r 当前只有一个分支了
> git branch -r
/origin/develop/branch_1
# 通过 git log 查看历史提交记录,发现只剩下最后一次的提交记录,而无法看到历史的提交记录
> git log
commit 75bdec69e39ea85fcdc750ef289ece7e76d2b79c (grafted, HEAD -> develop/branch_1, origin/develop/branch_1)
Author: ghimi
Date: Fri Mar 3 15:01:36 2023 +0800
Merge commit 'fc3fe2a0002fc394696ec131797038707f5f4864' into /develop/branch_2
> git fetch --unshallow
remote: Enumerating objects: 79593, done.
remote: Counting objects: 100% (79593/79593), done.
remote: Total 79593 (delta 2162), reused 77796 (delta 2162), pack-reused 0
Receiving objects: 100% (79593/79593), 23.05 MiB | 3.43 MiB/s, done.
Resolving deltas: 100% (2162/2162), done.
From www.gitee.com:ghimi/hello* branch develop/branch_1 -> FETCH_HEAD
# 此时通过 git log 命令查看时就会发现能够看到全部的历史提交记录了
> git log
使用 git checkout -t origin/develop/branch_1 在本地创建分支并追踪同名的远程分支
使用 Idea 的同学肯定用过,当在 checkout 远程分支后,会在本地为远程创建一个同名的分支,我们可以在本地分支上完成开发然后推送到相关远程分支上去。其实使用的就是 -t 选项
> git checkout -t origin/develop/branch_1
Switched to a new branch 'develop/branch_1'
Branch 'develop/branch_1' set up to track remote branch 'develop/branch_1' from 'origin'.
参考资料
Git clone 手册
相关文章:
[教程]使用 Git 克隆指定分支
Git 是我们开发过程中经常使用到的版本管理工具,在平常情况下我们从远程克隆的时候会将整个库克隆下来,这会包括整个版本库的历史提交记录和远程库里的所有分支。但在一些情况下,比如我们并不需要查看历史提交记录而只是希望能够获取到最新的代码&#x…...
Redis实现服务注册与服务发现源码阅读(Go语言)
Redis实现服务注册与服务发现源码阅读 背景 近期在看开源项目CloudWeGo中看到目前GoLang微服务框架Hertz中支持通过Redis实现服务注册与服务发现功能。便想着阅读下源码 源码阅读 gut clone了hertz-contrib后看到在一级目录下有目前各种主流的服务注册与发现的实现方案。为…...
论文复现-3
模型构建中的运算 数据集是CONLL03 这个数据集共有4种实体类型,所以,在做实体描述的embedding时,得到的语义表示的Tensor大小为 : 4*max_len, 具体指的是: type_input_ids: torch.LongTensor None, type_attention_m…...
667知识点 | 经过三年实战检验的667知识清单
文章目录 前言第一章 信息与信息资源第二章 信息社会第三章 信息交流第四章 信息技术第五章 信息组织第六章 信息管理活动第七章 信息资源人文管理第八章 信息资源经济管理第九章 信息资源系统管理第十章 信息资源管理专门化前言 参考书目:《信息管理导论(第三版)》党跃武推…...
后端快速上手前端三剑客 HtmlCSSJavaScript
文章目录前言HTML1.基础标签2.多媒体标签:3.表格&列表&布局4.表单CSS1.简介2.导入方式3.选择器JavaScript1.简介2.引入方式3.基本语法4.对象(1) 基本对象(2) BOM对象(3) DOM对象5.事件前言 结构:HTML 表现:CSS 行为:Java…...
Cdiscount、Allegro如何利用测评补单自养号提升店铺权重和流量
Allegro成立于 1999 年是在波兰最受欢迎的电商平台,75%的波兰人都知道该网站,Allegro的品牌认知度在波兰高达98%。Allegro平台卖家的数量目前还是比较少的约为13万,最重要的就是中国卖家占比少,所以竞争也比较低,像是美…...
第16天-性能压测:压力测试,性能监控,优化QPS,Nginx动静分离
1.性能监控 1.1.JVM架构 运行时数据区: 方法区:最重要的内存区域,多线程共享,保存了类的信息(名称、成员、接口、父类),反射机制是重要的组成部分,动态进行类操作的实现;…...
【python 基础篇 十一】python的函数-------函数的偏函数 高阶函数 返回函数 匿名函数 闭包
目录1.偏函数2.高阶函数3.返回函数4.匿名函数5.闭包1.偏函数 概念 当我们写一个参数比较多的函数时,如果有些参数,大部分场景下都是某一个固定值,那么为了简化使用,就可以创建一个新函数,指定我们要使用的函数的某个…...
妇女节到了,祝福所有女神 Happy Women‘s Day!
在每年3月8日人们庆祝妇女节 Womens Day is cllebrated on March 8 every year.国际妇女节(IWD),中国内地称“三八”国际劳动妇女节或国际劳动妇女节。是在每年的3月8日为庆祝妇女在经济、政治和社会等领域作出的重要贡献和取得的…...
etcd集群通过 Leader 写入数据,为什么K8s HA集群中讲每个 kube-apiserver 只和本机的 ETCD 通信
写在前面 对这个我不太明白,所有在 stackOverflow 的请教了大佬这里分享给小伙伴理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整…...
HTML 表单
HTML 表单和输入 HTML 表单用于收集不同类型的用户输入。 在线实例 创建文本字段 (Text field) 本例演示如何在 HTML 页面创建文本域。用户可以在文本域中写入文本。 创建密码字段 本例演示如何创建 HTML 的密码域。 (在本页底端可以找到更多实例。) …...
HTML、CSS学习笔记5(移动端基础知识、Flex布局)
一、移动端基础知识 1.PC端和移动端区别 移动端:手机版网页,手机屏幕小,网页宽度多数为100%,没有版心 PC端:电脑版网页,屏幕大,网页固定版心 PC端和移动端不是同一个网页 2.如何在电脑里面…...
【Java学习笔记】2.Java 开发环境配置
Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境。 window系统安装java 下载JDK 首先我们需要下载 java 开发工具包 JDK,下载地址:https://www.oracle.com/java/technologies/downloads/,在下载页面中根据自己的系统选…...
MyBatis——进阶操作(2)
标签 if标签 当提交的表单中有些为非必填项,用户并没有上传这些属性的值,那么程序可以上传NUll,也可以用if标签判断用户有没有上传这个值 <if test"参数!null">操作 </if>其中test中填写一条语句,如果得…...
循环结构
循环结构循环结构一、课前问答二、while循环三、do-while循环四、for循环五、流程控制5.1 break5.2 continue循环结构 一、课前问答 1、switch支持的数据类型。 2、switch中break的作用。 3、多重if如果多个条件都成立,执行方式。 二、while循环 语法: …...
漫谈数据库表设计及索引设计
一.数据库表设计 在数据库表设计上有个很重要的设计准则,称为范式设计。 什么是范式设计? 范式来自英文Normal Form,简称NF。MySQL是关系型数据库,但是要想设计—个好的关系,必须使关系满足一定的约束条件,…...
【JavaWeb】CSS基础知识:引入方式 + 选择器
CSS引入 CSS的引入有三种,三种的优缺点各不相同。 行内样式表 <!-- 行内样式表 --><!-- 相当于标签的一个属性 --><!-- 只对当前标签生效 --><!-- 优先级较高,会覆盖其他样式 --><p style"color: blue;">这是…...
02-前端-javaScript
文章目录JavaScript1,JavaScript简介2,JavaScript引入方式2.1 内部脚本2.2 外部脚本3,JavaScript基础语法3.1 书写语法3.2 输出语句3.3 变量3.3.1 全局变量var3.3.2 局部变量let3.3.3 常量const3.4 数据类型3.5 运算符3.5.1 \和区别 ▲3.5.2 …...
对链表学习的总结一
一,单链表结构定义 C/C++ 数组:一组具有相同类型数据的集合。结构体:不同类型数据的集合。 // Definition for singly-linked list. struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next...
toSring()还有个高级用法好用
Object.prototype.toString()能够很好的判断数据的类型及内置对象 typeof xxx:能判断出number,string,undefined,boolean,object,function(null是object)Object.prototype.toString.call(xxx):能判断出大部分类型Array.isArray(xxx):判断是否为数组var test= Object.…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
