【git系列】git clone与git fetch的区别,如何快速从0到1克隆远端代码仓到本地呢?
一些小伙伴最近在看我文章的时候,顺带问我为啥从远端把代码仓下载到本地的时候,要用git fetch
命令呢?
虽然git fetch origin
命令可以取回远程所有的分支,但是git clone
命令不就可以把代码仓克隆到本地了吗?
其实是我当时写文章的时候,没有想到git clone
命令;如果从0到1下载一个远端代码仓到本地的话,更加推荐git clone
命令。
git fetch
命令
该命令其实适合于从远端代码仓里更新代码到本地仓库中。
fetch的关键就在于有一个FETCH_HEAD,用来表示某个branch在远端的最新状态。这个分支列表保存在.git/FETCH/HEAD文件里,每一行对应于远端服务器的一个分支。当前分支指向的FETCH_HEAD,就是这个文件第一行对应的那个分支。
如果想更新某个指定分支,我们就需要显示的指定:
git fetch origin specifiedBranch
如果我们没有显示指定的话,我们就会把远程分支的master作为默认的FETCH_HEAD,然后取回远程所有的分支。
而如果我们是在本地空白文件夹里,从0到1的下载远端代码仓的话,需要在一开始做一步额外的操作git init
初始化。
git clone
命令
该命令会拷贝一个远端的Git仓库到本地。而且因为无需git init
初始化,直接git clone
即可(clone结束,本地目录会有一个.git的隐藏文件夹,存放着与远程仓库一模一样的版本库记录),相比起git fetch
,会更加快速方便。
所以说,git clone
是一个让本地从0到1 下载远端代码仓的操作。
克隆项目命令的格式如下:
git clone [url]
//[url] 是要克隆的项目链接。
举个栗子,例如我们要克隆git远端一个项目:
$ git clone https://XXXX.codehub.huawei.com/opensource/git-test-project.git
Cloning into 'git-test-project'...
remote: Enumerating objects: 16, done.
remote: Total 16 (delta 0), reused 0 (delta 0), pack-reused 16
Unpacking objects: 100% (16/16), done.
参考链接
- 点赞
- 收藏
- 关注作者
评论(0)