1 |
$ git clone git@github0123:jeremy0123/fetch.git fetch-local |
执行如上git clone
指令,相对于执行了如下工作。
- 创建一个文件夹fetch-local,执行
git init
初始化为一个仓库,git remote add 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就可查看到。1
2
3
4
5
6
7$ 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最后的工作:创建远程分支头的引用)。
~~ EOF ~~