1. 远程分支
1.1 特征
是对远程仓库的索引;
用户无法自由移动其HEAD,而只有在与服务端交互时才会移动——如pull,push,fetch,clone。
1.2 表示方法
用 (远程仓库名)/(分支名)
这样的形式表示远程分支。比如我们想看看上次同 origin
仓库通讯时master
的样子,就应该查看 origin/master
分支。
如origin/master区别与master。对于后者,是本地分支,使用者可以自由移动其HEAD,但对于后者则不行。
1.3 详解git clone
- 自动将远程仓库(包含了git.ourcompany.com及其它信息)命名为origin;
- 下载远程仓库的内容;
- 建立指向远程master指针,在本地命名为origin/master;
- 建立本地master分支。
1.4 当本地做过若干commit,且远程服务器也有人push过若干commit后
- 从图看出,origin/master并没有移动
- 远程与本地互不干扰(废话嘛……)
- 此时若进行push,会有类似[reject!!]的错误:因为origin/master 指针并不与服务器上的master 指针同步,也就是说我们——过时了!
1.4 如何push
- 将远程服务器的数据更新下来
- 合并分支,再push
1.5 多个远程服务器的情景
2. 跟踪分支
2.1 什么是跟踪分支
在Git中‘追踪分支’是用与联系本地分支和远程分支的. 如果你在’追踪分支'(Tracking Branches)上执行推送(push)或拉取(pull)时, 它会自动推送(push)或拉取(pull)到关联的远程分支上.
如果你经常要从远程仓库里拉取(pull)分支到本地,并且不想很麻烦的使用"git pull "这种格式; 那么就应当使用‘追踪分支'(Tracking Branches).
‘git clone‘命令会自动在本地建立一个'master'分支,它是'origin/master'的‘追踪分支’. 而'origin/master'就是被克隆(clone)仓库的'master'分支.
‘git clone‘命令会自动在本地建立一个'master'分支,它是'origin/master'的‘追踪分支’. 而'origin/master'就是被克隆(clone)仓库的'master'分支.
2.2 创建跟踪分支
git branch
--track
experimental
origin/experimental
git pull experimental
git pull experimental
它会自动从‘origin'抓取(fetch)内容,再把远程的'origin/experimental'分支合并进(merge)本地的'experimental'分支.
当要把修改推送(push)到origin时, 它会将你本地的'experimental'分支中的修改推送到origin的‘experimental'分支里, 而无需指定它(origin).
2.3 疑问
- 如何查看本地分支分别跟踪到哪些远程分支?