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

news/2024/10/20 20:22:16

对于超大型的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

有兴趣的同学可以尝试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73929.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

2024-2025-1 20241308 《计算机基础与程序设计》第四周学习总结

作业信息 这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP 这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK04 这个作业的目标 <门电路 组合电路,逻辑电路 冯诺依曼结构 CPU,内存,IO管理 嵌入式系统,并行结构 物理…

如何确认Windows电脑是否支持安装苹果系统?

Windows上安装苹果系统,无论是本地磁盘多系统共存安装还是通过虚拟机安装,不是所有电脑都支持,必须得硬件支持才行,不然会出现各种问题。以下是关于如何确认电脑是否支持安装黑苹果?的主要内容,如果未能解决你的问题,请参考其他文章: https://www.cnblogs.com一、查看硬件…

使用MySQL之创建计算字段

1. 创建计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式。下面举几个例子。如果想在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中。城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签打印程序却需要把它们作为一个…

如何自动识别CAD图中所有表格数据并导出

在CAD图中自动识别并导出表格数据,是相关领域数据处理的重要需求。由于CAD图形并不像传统的电子表格那样具备明确的行列关系,表格常以线条和文本形式存在,手动提取不仅费时费力,还容易出错。如何通过自动化工具通过图形解析快速、高效地识别表格结构,提取数据并导出至Exce…

2024数据采集与融合技术实践-作业1

作业① 要求:用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020)的数据,屏幕打印爬取的大学排名信息。 代码与运行结果 代码: #导入所需要的库 import requests from bs4 import BeautifulSoup import pandas as pd#爬取…

【报告】务虚笔记

务虚笔记同学们大家好,接下来由我向大家推荐史铁生的《务虚笔记》 我的报告分为四部分。书籍简介首先是书籍简介。务虚笔记是史铁生先生的首部长篇小说,于1996年发表在《收获》杂志上。它的行文优美、凝练,情感真挚、厚重,语言平实易读,虽然理解它的内容会让第一次读此书的…

高级程序设计第三次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13284 学号:102300107 姓名:陈沁怡 4.8.2感想:学会了转义字符的使用 4.8.3感想:数字表达的转换 4.8.44.8.64.8.7理解lf和f之间的…

2024-2025-1 20241322 《计算机基础与程序设计》第四周学习总结

2024-2025-1 20241322 《计算机基础与程序设计》第四周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK04这个作业的目标 <门电路 组合电路,逻辑电路…