首页 > 其他分享 >最小体积拉取git仓库并保持可更新

最小体积拉取git仓库并保持可更新

时间:2024-10-20 20:10:16浏览次数:1  
标签:pull git 仓库 拉取 -- depth 分支

对于超大型的git 仓库不需要提交只是拉取代码进行查看并希望保持代码更新,那么使用depth不仅能得到极小体积的仓库还能大大提速拉取时间

拉取最小代码

结论:功德+1,来自于掌门的用法,depth设置为300之后,基本上没碰到问题,git新手也可以完整拉取。

拉取代码:git clone http://git-internal.nie.netease.com/xxx.git --depth=1 -b 分支名

原始仓库有10G+但通过上述方式拉下来的git仓库才311MB,为何这么小?

这是因为git clone --depth=1只会克隆一个分支最近一次的commit,这样这个项目文件就不会很大,缺点就是只能看到最近一次的log。

其他远程分支并不在本地,所以这种情况下,需要用如下方法拉取其他分支

$ git clone --depth 1 https://github.com/dogescript/xxxxxxx.git
$ git remote set-branches origin 'remote_branch_name'
$ git fetch --depth 1 origin remote_branch_name
$ git checkout remote_branch_name

depth=1 git pull无法拉取更新

在我本地使用git pull 无法拉取到新的修改,报错:fatal: refusing to merge unrelated histories,并且git fetch也无法拉取,完整的git log如下:

git.exe pull --progress -v --no-rebase --depth 1 "origin"
POST git-upload-pack (423 bytes)
POST git-upload-pack (434 bytes)
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
From http://git-internal.nie.netease.com/xxx
= [up to date]      分支名 -> origin/分支名
fatal: refusing to merge unrelated histories


这篇文章《加速几十倍 git clone 速度的 --depth 1,它的后遗症怎么解决? - 知乎 (zhihu.com)》,提到可以使用pull,但我本地却不行。

通过命令:git pull --rebase origin 分支名,就可以,但仍然是只有最后一次的提交log,最后修改depth的参数改大到300,就解决了。

长久未更新分支非常多冲突

我们有一个hotfix分支用来处理每周发版本后的更新,这个分支上有个文件每周都会被反复频繁修改然后在下个周期发版会被清空为空白文件。

重点来了:多周没更新之后在本地进行git pull或 fetch&rebase拉远程代码都会产生非常多冲突,每次都要花大量时间时间处理冲突

pull的选项不管怎么选,都无法成功,报错信息一般是:

  1. fatal: refusing to merge unrelated histories
  2. fatal: Not possible to fast-forward, aborting

image-20240924171418947

解决办法

解决办法如下:强制重置到远端分支的最新版本,操作步骤

  1. 使用pull进行拉取一遍(不要勾depth),尽管此时会pull失败,但能拉取远端最新的log,为后面做准备
  2. 在仓库中右键 show log
  3. 在log窗口的左上角点击分支名,切到远程分支最新日期的提交
  4. 回到log窗口,选中最新的提交记录,右键【reset 分支名 to this】,在reset窗口中选择【hard】进行完全重置

PS:碰到无法pull也可以使用此方法来解决

image-20240924165351039

扩展资料

tortoisegit选项 fast forward only和no fast forward是什么意思

在Git中,Fast-forward和No-fast-forward是两种不同的合并策略。

  1. Fast-forward(快进):如果当前分支没有新的提交,而待合并的分支有新的提交,那么Git会直接将当前分支指向待合并分支的最新提交。这种情况下,Git不会创建新的合并提交。这就像你快进电影到最新的场景,所以叫做"Fast-forward"。

  2. No-fast-forward(非快进):无论待合并的分支是否有新的提交,Git都会创建一个新的合并提交,并将当前分支指向这个新的合并提交。这样做的好处是,你可以清楚地看到项目的历史变化,知道何时进行了合并操作。

在TortoiseGit中,"Fast forward only"选项表示只进行快进合并,如果不能进行快进合并,那么操作会失败。"No fast forward"选项表示进行非快进合并,即使可以进行快进合并,Git也会创建一个新的合并提交。

其它方案拉取最小代码

git pull --rebase origin 分支名

git submodule update --remote

有兴趣的同学可以尝试

标签:pull,git,仓库,拉取,--,depth,分支
From: https://www.cnblogs.com/zhaoqingqing/p/18487788

相关文章

  • 计算机毕业设计-基于Java+SSM架构的仓库管理系统项目开发实战(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • git基础
    Git参考地址:https://www.runoob.com/git/git-tutorial.html零、概念介绍​ Git是一个分布式(本地和远程仓库)版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过GIt仓库来存储和管理这些文件,Git仓库分为两种:​ 本地仓库:开发人员自己电脑上的Git仓库​ 远程......
  • github/gitee个人博客到底是什么一个运行原理?
    本文主要讲的是GitHub、Gitee这样的代码存储网站上提供的个人博客建站的原理分析,需要注意的是,本文并不介绍GitHub、Gitee上建立个人blog的操作步骤,本文只介绍原理,不介绍实操步骤。在交代本文主要内容之前需要说明几个概念,那就是动态网站、静态网站的区别,在这两个概念之上我又提......
  • 如何使用github actions 自动部署Hexo博客
    一、创建github仓库创建两个github仓库,一个共有仓库和一个私有仓库。私有仓库用来存储Hexo项目源代码用master分支来存放项目源代码公有仓库用来存储编译之后的静态页面用gh-pages分支来存储静态页面当私有仓库的master分支有内容push进来时,GitHubActions自动编译并且......
  • IDEA如何配置自己的maven和maven设置阿里云仓库
    前言我们在使用IDEA开发Java应用时,一般是需要配置maven仓库的,那么我们应该如何配置呢?此外,默认的maven仓库下载速度很慢,我们一般可以配置阿里云或者华为云仓库,这个又应该怎么配置呢?如何配置maven及配置阿里云仓库首先,我们打开设置面板。然后,我们点击【Build,Execution,Deploym......
  • 安装 Git
    目录git的下载选择Windows开始安装找到下载位置双击Git同意协议选择安装路径剩下的采取傻瓜式安装选择安装的组件开始菜单目录默认编辑器选择初始化新项目的主干名称调整git的环境变量选择SSH可执行文件选择HTTPS后端传输配置行尾转换配置GitBash使用的终端模拟器git......
  • golang项目引用GitHub私有仓库module
    1.创建gomodule项目module的名字假设为go-testmodule项目创建成功后,将go.mod文件中的module"go-test"修改成module"github.com/tonglin0325/go-test"避免引用的时候goget的时候报错,如下gogetgithub.com/tonglin0325/go-test@latestgo:github.com/tonglin0325......
  • [git] git问题处理
    问题集合TheTLSconnectionwasnon-properlyterminated执行gitclone指令的时候报错dysonnnn@dysonnnn-KPRC-WX0:~$gitclonehttps://github.com/ohmyzsh/ohmyzsh.git~/.oh-my-zshCloninginto'/home/dysonnnn/.oh-my-zsh'...fatal:unabletoaccess'https......
  • 2024年数字化转型与管理国际学术会议(DTM 2024) 2024 International Conference on Digi
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus大会时间:2024年11月22-24日三、大会介绍2024年数字化转型与管理国际学术会......
  • 从克隆项目到修改并上传到自己 GitHub 仓库的流程(包括私钥配置)
    从克隆项目到修改并上传到自己GitHub仓库的流程(包括私钥配置)生成SSH密钥如果还没有生成SSH密钥,可以通过以下命令生成:ssh-keygen-trsa-C"[email protected]"系统会提示你保存密钥的位置,通常保存在~/.ssh/id_rsa,如果不需要加密密码,直接按回车。添加SSH......