如何使用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
完全覆盖您的历史记录。但小心点。这将破坏您的本地未推送修改。