首页 > 其他分享 >Git 克隆指定分支

Git 克隆指定分支

时间:2024-02-03 16:16:01浏览次数:29  
标签:origin git develop 克隆 -- Git branch 分支

Git 克隆指定分支

指定远程分支克隆的好处

减少仓库下载体积,提高代码仓库下载速度
a. 在没有需要查看历史提交的情况下,使用浅克隆模式只克隆最新一次的提交内容:
	git clone --depth 1 -b master [email protected]/ghimi/hello.git
b. 在远程仓库分支比较多的情况下,只克隆远程仓库的指定分支和其上的全部提交记录:
	git clone --single-branch -b master [email protected]/ghimi/hello.git

通过-b branch_name 选项Git 克隆指定分支

当我们没有通过 -b 选项指定分支时,Git 会默认会在本地创建一个 master/main分支并关联到远程的主干分支上,

但如果我们希望创建的本地分支关联的不是主干分支时,我们就可以通过-b 选项来指定我们追踪的远程分支名称如:

# 指定克隆远程分支 `/develop/branch_1## 标题`
> git clone -b /develop/branch_1 [email protected]/ghimi/hello.git

-b选项搭配 --single-branch 选项只克隆指定分支

通过这种方式克隆远程仓库除了指定的远程分支不是主干分支以外,

还是会将远程的所有分支都拉取下来,并不能够起到减小克隆仓库体积的功能。

# 指定克隆远程分支 `/develop/branch_1`
> git clone -b /develop/branch_1 [email protected]/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 [email protected]/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 [email protected]/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 [email protected]/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 [email protected]/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'.

克隆不拉取标签 --no-tags

打标一般用于线上版本管理,在本地开发中其实没什么用,可以在 git clone 或者 git fetch 的时候设置选项 --no-tags 指定不拉取标签。交的代码,此时我们可以--depth 1 实现浅克隆,此时我们拉取的代码就是最新一次提交后的代码快照。

标签:origin,git,develop,克隆,--,Git,branch,分支
From: https://www.cnblogs.com/nuomibaibai/p/18004855

相关文章

  • git
    git学习内容简介Git是一个分布式版本管理系统,可以在任何时间点,把文档的状态作为更新记录保存起来。方便数据恢复。数据库:远程数据库:配有专用的服务器,为了多人共享而建立的数据库。本地数据库:为了方便用户个人使用,在自己的机器上配置的数据库。git的提交注释:第1行:......
  • 手把手教你搭建属于自己的网站(获取被动收入),无需服务器,使用github托管
    大家好,我是亚洲著名程序员青松,本次教大家如何搭建一个属于自己的网站。下面是我自己搭建的一个网站,是一个网址导航网站。托管在了github上面,目前已经运营了三个月,每天的访问量大约有100ip左右。下图是在51.la上面的统计,这个网站是我在2023年11月份发布的,刚发布的时候流量比较高......
  • XmlDocument 解决 Clone、CloneNode、ImportNode 等节点克隆后的标签自闭合问题
    前言:这两天在对Taurus.Mvc 做html 加载性能优化时,发现存在这个问题。具体优化的是CYQ.Data 组件的XHtmlAction 相关类。问题过程:之前XmlDocument 调用 LoadXml(xml)之后,缓存对象,再次使用时,都是重新LoadXml:XmlDocumentnewDoc=newXmlDocument();......
  • 配置Github免密提交
    配置Github免密提交配置git使用的username和email,该信息将会在git提交记录中显示gitconfig--globaluser.name"Yourusername"gitconfig--globaluser.email"[email protected]"请注意用你的githubname和email填充随后,生成sshkey,以便使用ssh连接至githubssh-k......
  • 如何给极狐GitLab 配置 webhook,自动触发 Pipeline?
    本文根据工作中的痛点来举例介绍如何使用极狐GitLab,让你的日常工作更高效。还在只使用极狐GitLab存放代码?那你就OUT啦。赶紧看看这篇文章,让你的日常工作更高效。使用GitlabWebhook触发Pipeline,打通工作消息通知关于A/B同学的问题,我想可以使用Webhook触发Pipe......
  • github下载Vue-Devtools进行安装的方式
    注意:下载Vue-Devtools依赖需要yarn环境.0.安装:yarnnpminstallyarn-g配置:下载镜像1.在C盘目录下,打开.yarnrc环境配置文件2.复制下面命令到配置文件registry"https://registry.npmmirror.com"chromedriver_cdnurl"https://npmmirror.com/mirrors/chromedriver/"elect......
  • 3、git命令从develop分支合并到master分支
    git命令从develop分支合并到master分支1、拉取develop分支的代码gitcheckoutdevelop//切换成本地分支gitpullorigindevelop//拉取远程开发分支gitadd.//暂存到本地仓库gitcommit-m//增加备注信息gitpushorigindevelop//推送到远程仓库gitcheckoutmaster......
  • Git log树形查看
    Gitlog树形你可以通过在Git配置文件中设置别名来创建自定义的Git命令别名。要为给定的gitlog命令创建别名,你可以按照以下步骤进行操作:打开终端,并确保你在Git存储库的目录中。运行以下命令以编辑Git配置文件:gitconfig--global--edit在打开的配置文件中,你可以添加一......
  • git~issue在github/gitlab中的使用
    本文档适用于github和gitlabissue介绍GitHub中的issue功能是一种用于跟踪项目中任务、缺陷、功能请求和讨论的工具。通过issue,项目成员可以提出问题、报告bug、请求新功能,进行讨论,并且能够将issue与代码变更(比如pullrequest)关联起来,以便更好地进行协作和项目管理。......
  • Git的常用操作
    首次使用git时要设置name和emailgitconfig--globaluser.name"testname"gitconfig--globaluser.email"[email protected]"克隆远程仓库到本地gitcloneURL如果你在本地已经有代码了,想推送到一个新的远程仓库cd代码所在的目录gitinitgitadd--allgitcommit......