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

git-clone的single-branch操作回退

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

最近使用git越来越多,一些git的功能使用也更熟悉了一些。
之前使用了single-branch下载分支,后来想取消掉,但怎么做呢,查了一些资料之后,了解到了怎么做,特记录下来。

背景

所在的项目中,一个库的分支非常多,有50上以上的分支,clone工程时,也耗时比较长。下载的时候,考虑着只用一个分支,就指定了分支clone的工程。
操作语句形如:

$ git clone -b mybranch --single-branch --depth 1 https://user@192.168.0.101:8080/scm/git/demoproject local-folder-name

过了一段时间后,发现单用这一个分支不够用了,需要下载一个新的分支,但通过
git branch -a 查看是,会发现本地和远端都只有这一个分支存在。
形如:

$ git branch
*mybranch
remotes/origin/mybranch

如何去除single-branch影响呢?怎么能看到远端的所有分支呢?也只有看到了远端的哪些其余的分支,才能够去把远端的其他分支下载到本地来,才能checkout来switch到另一个分支上去。

去除single-branch影响

如何去除single-branch影响?我们先来看一看single-branch会对配置产生哪些影响呢?
观察发现,在.git/config有体现它的影响。
下面观察一个带single-branch 和 一个不带single-branch是,这个配置文件的变化。

观察配置

不使用single-branch时的,.git/config缺省配置:

[remote "origin"]url = http://username@192.168.0.101:8080/scm/git/demoprojectfetch = +refs/heads/*:refs/remotes/origin/*
[branch "mybranch"]remote = originmerge = refs/heads/mybranch

使用single-branch时的,.git/config配置

[remote "origin"]url = http://username@192.168.0.1014:8080/scm/git/demoprojectfetch = +refs/heads/mybranch:refs/remotes/origin/mybranch
[branch "mybranch"]remote = originmerge = refs/heads/mybranch

可以观察到差异体现在remote “origin“里面的fetch配置项上。

回退配置

对于回退时,查阅资料发现,也确实是来修改这个配置项的,下面来看修改的方式。

  1. 设定配置[remote “origin“].fetch

$ git config remote.origin.fetch “+refs/heads/:refs/remotes/origin/

  1. 重新获取origin信息,通过fetch获取到所有的分支信息树结构
    注意:这一步如果库比较大,分支比较多,可能耗时会比较长

$ git fetch origin

  1. 观察远端分支,会看到增加了很多

$ git branch -a
*mybranch
remotes/origin/mybranch
remotes/origin/master

去除single-branch后

经过上一步,回退了single-branch。
此时这个本地库就和直接clone的一样了,可以切换到拥有的所有分支了。

当然随之而来,也会看到本地库所占的大小增加了很多。
linux下可以使用 du -sh 来查看目录所占的大小,如果观察的话,会发现增长了很多。
因为去除single-branch的话,我们就和远程库保持一致了,自然大小也会比较大了。

有利有弊,去除single-branch后,大小增加了,但同时我们恢复了切换到所有其它分支的自由。

切换到其他分支方法:

此时如果想要checkout到一个新的分支上,就可以执行下面操作来做了:

$ git checkout master
分支 master 设置为跟踪来自 origin 的远程分支 master
切换到一个新分支 ‘master’

切换后,就可以查看本地分支,可以看到本地多了这个分支,也切换到了这个分支

$ git branch

  • master
    mybranch

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

http://www.lryc.cn/news/286982.html

相关文章:

  • 03 SpringBoot实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)
  • YOCTO基础 - 创建meta层与bb文件
  • 网络电视盒子哪个好?博主分享超高性价比网络电视盒子推荐
  • leetcode 刷题2
  • 2-SAT问题相关理论和算法
  • 【大数据精讲】全量同步与CDC增量同步方案对比
  • 自定义通用返回对象
  • 从0开始python学习-51.pytest之接口加密封装
  • c++的命名空间
  • 阿富汗塔利班兴起时的比赛代码3475:练85.3 删数问题(Noip1994)
  • 大数据平台红蓝对抗 - 磨利刃,淬精兵!
  • 【2024-01-22】某极验3流程分析-滑块验证码
  • Laya2.13.3接入FGUI
  • 短视频账号矩阵系统+无人直播系统源码技术开发
  • C语言或C++通过IShellLinkA创建或解析lnk快捷方式(使用char字符数组)
  • Spring源码学习-Spring流程概述(一)
  • Figma怎么设置中文,Figma有中文版吗?
  • 智慧文旅一机游:科技与文化的完美结合,引领智慧文旅新潮流,智慧旅游未来已来
  • 多维时序 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积长短期记忆神经网络融合多头注意力机制多变量时间序列预测
  • 软件工程实验报告(完整)
  • Java零基础学习20:集合的练习
  • 【latex】在Overleaf的IEEE会议模板中,快速插入参考文献
  • java反射之Field用法(获取对象的字段名和属性值)
  • Java Web(三)--CSS
  • 天津大数据培训班推荐,数据分析过程的常见错误
  • 【笔记】Helm-3 主题-17 弃用的Kubernetes API
  • 麒麟系统—— openKylin 安装 java
  • HTML学习笔记——07:其他嵌入技术
  • 【UE】在控件蓝图中通过时间轴控制材质参数变化
  • linux C语言socket函数send