gitclone?git clone 太慢怎么办
大家好,今天我将为大家揭秘gitclone和git clone 太慢怎么办的奥秘,希望我的分享能给你带来新的启发和知识。
git clone代码 是克隆所有分支到本地吗
可以。
远程仓库
git
clone
下来,当你执行
git
branch,你只会看到
*
master
并不会看到其他分支,即便远程仓库上有其他分支,使用
git
branch
-va
可以查看本地+远程分支列表
*
master
0840594
merge
master
and
1.0.0
remotes/origin/1.0.0
743012a
'update'
remotes/origin/2.0.0
2787838
udpate
remotes/origin/HEAD
->
origin/master
remotes/origin/master
0840594
merge
master
and
1.0.0
如果想切换到
origin/2.0.0
的分支,我们可以
git
branch
remotes/origin/2.0.0
不过结果并不如意:
*
(detached
from
origin/2.0.0)
master
git
branch
会看到上面的信息,这里还需要一步操作:
git
checkout
-b
2.0.0
-b
的意思是
base,以当前分支为
base,新建一个名叫
2.0.0
的分支,这里当然也可以使用其他的命名。此时再执行
git
branch
就能看到:
$
git
br
master
*
2.0.0
就
OK
了~
git clone 命令
git clone [url][url]是你要拷贝的项目。
在git中,clone命令可以在当前路径下创建一个新的目录,并复制git库到新创建的目录,用于查看或者修改该项目,语法为“git clone [url]”。
git clone拷贝一个 Git仓库到本地,让自己能够查看该项目,或者进行修改。
默认情况下,Git会按照你提供的 URL所指向的项目的名称创建你的本地项目目录。通常就是该 URL最后一个/之后的项目名称。如果你想要一个不一样的名字,你可以在该命令后加上你想要的名称。
执行完git clone命令后,执行git clone的文件目录,称为目录A,目录A下并没有形成本地仓库!并没有形成本地仓库!并没有形成本地仓库!
本地仓库在哪?在git clone命令执行结束之后,目录A下会多一个目录B,目录B下就是本地git仓库,并且本地git仓库已经和远程git仓库连接!
此时,本地仓库默认分支名字是main,为什么叫main呢?因为远程仓库的默认分支名字是main。
本地仓库关联的远程仓库默认名字是origin。
git clone 太慢怎么办
Git和 GitHub
的出现打开了开源世界的另一扇大门,版本控制变得更强大(也更复杂),项目的管理变得更加容易,项目的开发也变得更容易进行多人协作。GitHub
无疑是程序员的 Facebook
,在这里汇聚了无数世界顶级的项目以及顶级的程序员,你可以为你感兴趣的项目加星(Star),可以关注任何人(Follow)以及他们的项目
(Watch),而且更赞的是,你可以复制一份别人项目的副本(Fork),来进行自己的修改,如果你愿意的话,你还可以向项目的原作者发起请求
(Pull Request),将你做的修改合并到原项目中。这样无论你是什么人,来自不同的国家,拥有不同的技能,都可以对所有开源的项目作出贡献。
尽管上面描述的开源世界如此美好,但是在大天朝,在墙内,你却完全无法领略。因为当你访问 GitHub时,或者使用 git clone兴致勃勃的下载你感兴趣的项目时,巨慢的速度将彻底击毁你的信心,最终只好放弃表示玩不起。
强大的长城技术对 GitHub网开一面,没有像 Google或 Facebook这样直接斩尽杀绝,但是对它做了严格的限速,这种折磨比直接毙了更痛苦(有网友表示,有些地区速度很快,有些地区速度很慢,也有可能是和网络运营商有关)。如上图所示, git clone的下载速度从来没有超过 10KiB/s,这也就意味着一个 100MiB的项目,需要近三个小时才能下完,而且由于网络的不稳定性,下载过程中偶尔会出现断开连接的情况,由于 git clone不支持断点续传,这让几个小时的下载时间白白浪费掉,只能重新开始。
这篇文章将介绍几种方法来快速从 GitHub上下载代码。
一、git shallow clone
git clone默认会下载项目的完整历史版本,如果你只关心最新版的代码,而不关心之前的历史信息,可以使用 git的浅复制功能:
$ git clone--depth=1 https://github.com/bcit-ci/CodeIgniter.git
--depth=1表示只下载最近一次的版本,使用浅复制可以大大减少下载的数据量,例如, CodeIgniter项目完整下载有近 100MiB,而使用浅复制只有 5MiB多,这样即使在恶劣的网络环境下,也可以快速的获得代码。如果之后又想获取完整历史信息,可以使用下面的命令:
$ git fetch--unshallow
或者,如果你只是想下载最新的代码看看,你也可以直接从 GitHub上下载打包好的 ZIP文件,这比浅复制更快,因为它只包含了最新的代码文件,而且是经过 ZIP压缩的。但是很显然,浅复制要更灵活一点。
二、GUI工具+代理
如果很有幸你正在使用代理,懂得如何翻墙的话,那么访问 GitHub对你来说应该不在话下。下载 GitHub
上项目的最简单的方法就是使用一款图形化界面(GUI)的 Git工具,这样的工具现在比比皆是。使用 GUI
工具方便的地方在于,可以在设置中配置是否要使用代理,将你翻墙所使用的代理 IP拿过来配置上就 OK了,或者更直接的,将代理配置为系统代理。
三、git+ http.proxy
如果你跟我一样,喜欢使用原生的 git命令,喜欢在命令行下操作的那种感觉,那么也可以在命令行下直接配置 git使用代理,当然前提一样是,你懂得如何翻墙。
$ git config--global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
$ git config--global https.proxy https://proxyuser:proxypwd@proxy.server.com:8080
使用上面的命令配置完之后,会在~/.gitconfig文件中多出几行:
[http]
proxy= http://proxyuser:proxypwd@proxy.server.com:8080
[https]
proxy= https://proxyuser:proxypwd@proxy.server.com:8080
你也可以使用下面的命令检查配置是否生效:
$ git config--global--get http.proxy
$ git config--global--get https.proxy
另外,如果你想取消该设置,可以:
$ git config--global--unset http.proxy
$ git config--global--unset https.proxy
配置完成后,重新 clone一遍,可以看到速度得到了极大的提升!
题外话:在命令行中如何使用代理?
要注意的是使用 git config--global配置的代理只能供 git程序使用,如果你希望让命令行中的其他命令也能自动使用代理,譬如 curl和 wget等,可以使用下面的方法:
$ export http_proxy=http://proxyuser:proxypwd@proxy.server.com:8080
$ export https_proxy=https://proxyuser:proxypwd@proxy.server.com:8080
这样配置完成后,所有命令行中的 HTTP和 HTTPS请求都会自动通过代理来访问了。如果要取消代理设置,可以:
$ unset http_proxy
$ unset https_proxy
还有一点要注意的是,使用 http_proxy和 https_proxy只对 HTTP和 HTTPS请求有效,所以当你 ping www.google.com的时候如果 ping不通的话,也就没什么大惊小怪的了。
题外话:如何使用 PAC文件?
有时候我们会使用 git访问不同的 git仓库,譬如 GitHub,或者 Git@OSC,或者你自建的 Git服务器,但是只想访问 GitHub的时候使用代理,访问其他的仓库不要使用代理。这时候我们似乎可以使用 PAC来解决这个问题。 PAC(代理自动配置)正是用于浏览器来根据不同的 URL自动采用不同的代理的一项技术,该文件包含一个 FindProxyForURL Javascript函数,用于根据 URL来返回不同的代理。
但是遗憾的是,目前 git似乎还不支持 PAC文件,但我们可以打开 PAC文件找到代理的地址,然后通过上面的方法来配置或取消配置,只是有些繁琐。也许可以写个脚本来解析 PAC文件,并将 git包装下,来实现自动切换代理,有机会尝试下。
文章到此结束,如果本次分享的gitclone和git clone 太慢怎么办的问题解决了您的问题,那么我们由衷的感到高兴!