【git系列】git clone与git fetch的区别,如何快速从0到1克隆远端代码仓到本地呢?

举报
gentle_zhou 发表于 2022/04/07 20:17:44 2022/04/07
【摘要】 如果从0到1下载一个远端代码仓到本地的话,更加推荐`git clone`命令

一些小伙伴最近在看我文章的时候,顺带问我为啥从远端把代码仓下载到本地的时候,要用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.

参考链接

  1. https://www.runoob.com/git/git-fetch.html
  2. https://www.runoob.com/git/git-clone.html
  3. https://stackoverflow.com/questions/292357/what-is-the-difference-between-git-pull-and-git-fetch
  4. https://www.quora.com/What-is-the-difference-between-git-clone-and-git-fetch
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。