如何使用Git浅克隆来提高性能

简介: 克隆(clone)整个仓库是使用 Git 的标准操作过程。每个克隆通常包括存储库中的所有内容

如何使用Git浅克隆来提高性能


克隆(clone)整个仓库是使用 Git 的标准操作过程。每个克隆通常包括存储库中的所有内容。

这意味着克隆时,不仅会得到文件,还会得到曾经提交的每个文件的每个修订版本,以及每次提交的历史记录。而且,如果您的代码库里有很多资产,那将包含很长的历史。主要问题是,这将在持续集成(CI)管道中造成瓶颈。

查看 github.com 等代码库的优化项目,经常需要把代码完成克隆下来,越是星多的项目,代码量越大,历史也可能越长,在国内网络不好的情况下,经常下载若干GB以后,断网。一旦中断,无法续传,又得从头开始,苦不堪言。

当然可以通过下载zip/gz发行源码包来完成,但如果想参与项目开发,这个方案就不可行了。


解决方案:Git浅克隆

Git浅表克隆可让您仅获取最新的提交,而不是整个回购历史记录。因此,如果您的项目具有多年的历史记录或数千次提交的历史记录,则可以选择一个特定的深度进行提取。


如何执行Git浅克隆

在git clone命令中提供--depth 1的参数,以仅复制仓库的最新版本:

git clone -–depth [depth] [remote-url]


您还可以使用git浅克隆访问单个分支:

git clone [远程URL] --branch [名称] --single-branch [文件夹]

使用git浅克隆,您可以获得更少的文件。可以快速完成克隆、构建和反馈,可以更快地交付。


解决方案:完全删除不需要的历史记录

如果您不需要维护完整的历史记录,则可以使用以下命令集从Git存储库中完全删除历史记录。将存储库克隆到工作站上的路径后,请使用 --orphan 选项,该选项只需一次提交即可将其返回到init状态。


如何修剪您的存储库

git checkout --orphan freshBranch 
git add -A git commit 
git branch -D master
git branch -m master
git push -f origin master
git gc --aggressive --prune = all  
git push -f origin master

在路径中添加所有文件并提交。接下来,删除远程主分支,将当前分支重命名为 master。然后,将新的主服务器强制推入代码托管环境。最后,使用prune命令删除所有旧文件,然后将新状态推送到远程。

通过修剪您的存储库,可以提高克隆性能,而无需使用git浅克隆。消除不需要的历史记录可以减轻您的存储库的负担,从而使交付速度更快。

是否要重置本地存储库?您还可以使用 git force clone 完全覆盖您的历史记录。但小心点。这将破坏您的本地未推送修改。

相关文章
|
开发工具 git
Git分支使用场景
Git分支使用场景
40 0
|
存储 安全 Shell
Git clone 克隆私有项目
Git clone 克隆私有项目
Git clone 克隆私有项目
|
6月前
|
存储 算法 开发工具
深入剖析Git对象底层原理
Git 在中间做了什么,它如何存储不同的文件和内容,以及如何区分不同分支下的文件版本呢?日常操作对这些自动的操作都是无感的。 但是如果哪天一旦上述操作中出现了错误,需要找回自己的代码时,如果不懂 Git 其内部存储原理,是没法找回的,因此为了避免这种情况,就有必要去了解其内部的存储——Git 对象的原理。
37 0
深入剖析Git对象底层原理
|
6月前
|
开发工具 git 开发者
Git 的基本概念和使用方式
Git 的基本概念和使用方式
46 0
|
6月前
|
开发工具 git
Git 的基本概念和使用方式。
Git 的基本概念和使用方式。
34 0
|
开发工具 git
git clone避坑的万能步骤
git clone避坑的万能步骤
2105 1
|
开发工具 git
git合并代码原理
git合并代码原理
|
安全 Shell 开发工具
【Git】一文带你入门Git分布式版本控制系统(必要配置、工作原理、创建/克隆项目)
【Git】一文带你入门Git分布式版本控制系统(必要配置、工作原理、创建/克隆项目)
104 0
|
安全 IDE 网络协议
【Git】版本控制之基础用法
进公司毕竟是多人协作的事情,不是你一个人在更改代码,所以必须要会代码管理工具来多人管理代码。(如果一个人干所有人的活当我没说) 作为2023年代码管理工作最为出名的分布式那肯定还是Git。 当然也有其他的,比如SVN等等。 这篇主要讲解的是Git的使用。
104 0
|
开发工具 git
怎么用 git 命令合并代码?
怎么用 git 命令合并代码?
283 0
怎么用 git 命令合并代码?