Git远程02:git clone都做了什么 - higoge/blog GitHub Wiki

00

$ git clone git@github0123:jeremy0123/fetch.git fetch-local
  • 创建一个文件夹,创建一个仓库,名称叫origin。
  • 创建远程跟踪分支remote/origin/*。
  • 创建并切换到初始分支,这个分支是从远程仓库当前活动分支fork来的。
  • 以上工作完成后,执行一个没有参数的git fetch指令,更新所有远程跟踪分支。
  • 执行没有参数的git pull指令,合并远程的master分支到本地的master分支。同时设置master分支的upstream为远程跟踪的master分支。本条执行的条件是远程分支存在master分支。
  • 创建默认配置,即.git/config文件,在.git/refs/remotes/origin/创建远程分支头的引用(HEAD文件);初始化配置文件中remote.origin.url remote.origin.fetch参数。

**注意:**远程跟踪分支,使用命令git branch -a就可查看到。

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/br01
  remotes/origin/br01-remote
  remotes/origin/br03
  remotes/origin/master

这些分支叫远程跟踪分支,但真实的意思应该是,远程分支在本地仓库的缓存,不执行git fetch命令,不会获取到远程分支的更新。千万不要将这些分支当做远程分支,以为是自动更新的。 另外,remotes/origin/HEAD -> origin/master 表示远程仓库origin默认分支是origin/master分支(其实就是显示git clone最后的工作:创建远程分支头的引用)。

⚠️ **GitHub.com Fallback** ⚠️