一、git shallow clone
git clone
默认会下载项目的完整历史版本,如果你只关心最新版的代码,而不关心之前的历史信息,可以使用 git 的浅复制功能:
1 |
|
--depth=1
表示只下载最近一次的版本,使用浅复制可以大大减少下载的数据量,例如,CodeIgniter 项目完整下载有近 100MiB ,而使用浅复制只有 5MiB 多,这样即使在恶劣的网络环境下,也可以快速的获得代码。如果之后又想获取完整历史信息,可以使用下面的命令:
1 |
|
或者,如果你只是想下载最新的代码看看,你也可以直接从 GitHub 上下载打包好的 ZIP 文件,这比浅复制更快,因为它只包含了最新的代码文件,而且是经过 ZIP 压缩的。但是很显然,浅复制要更灵活一点。
备注:也可以通过下载.ZIP压缩包,然后只从github上clone那个.git目录,如下:转载至:https://stackoverflow.com/questions/15681643/how-to-clone-git-repository-from-its-zip
-
Grab the
.git
directory by cloning a bare repository$ mkdir repo $ git clone --bare http://github/user/repo repo
-
Make the
.git
directory and move the cloned files$ mkdir repo/.git $ mv repo/* repo/.git
-
Unzip the repository
$ unzip repo.zip
-
Re-initialize the repository
$ cd repo $ git init
注意在拷贝src code的时候,有可能有.gitignore和.gitmodule,通过cp -rf的方式不能拷贝过来,需要单独cp .gitignore,cp .gitmodule才能拷贝过来,然后执行git submodule update --init --recursive --depth=1 ,注意这里继续用--depth=1能节省好多下载时间。
二、GUI 工具 + 代理
如果很有幸你正在使用代理,懂得如何翻墙的话,那么访问 GitHub 对你来说应该不在话下。下载 GitHub 上项目的最简单的方法就是使用一款图形化界面(GUI)的 Git 工具,这样的工具现在比比皆是。使用 GUI 工具方便的地方在于,可以在设置中配置是否要使用代理,将你翻墙所使用的代理 IP 拿过来配置上就 OK 了,或者更直接的,将代理配置为系统代理。
三、git + http.proxy
如果你跟我一样,喜欢使用原生的 git 命令,喜欢在命令行下操作的那种感觉,那么也可以在命令行下直接配置 git 使用代理,当然前提一样是,你懂得如何翻墙。
1 2 |
|
使用上面的命令配置完之后,会在 ~/.gitconfig 文件中多出几行:
1 2 3 4 |
|
你也可以使用下面的命令检查配置是否生效:
1 2 |
|
另外,如果你想取消该设置,可以:
1 2 |
|
配置完成后,重新 clone 一遍,可以看到速度得到了极大的提升!
转载至:https://www.aneasystone.com/archives/2015/08/git-clone-faster.html