Git 学习日记–远程跟踪分支
背景
默认情况下,远程分支master
同本地的master
分支是相互关联的,主要体现在两个方面:
-
pull
操作时,提交记录会被先下载到origin/master,之后再合并到本地master分支。隐含的合并目标由这个关联所确定。 -
push
操作时,我们把工作从master推到远程仓库的master分支(同时会更新远程分支origin/master)。这个推送的目的地也是由这种关联确定的。
实质
本质上,master和origin/master的关联联系是由分支的“remote tracking
”属性决定的。master被设定为跟踪origin/master–意味着:master分支指定了推送的目的地址以及拉取后合并的目标。
克隆远程仓库的时候,Git 就自动帮助我们把这个属性设置好了,当我们克隆时,Git 会为远程仓库的每个分支在本地仓库中创建一个远程分支(比如origin/master)。然后再创建一个跟踪远程仓库中活动分支的本地分支,默认情况下这个本地分支会被命名为master。克隆完成后,会得到一个本地分支(如果没有这个本地分支的话,本地目录就是“空白”的),但是可以查看远程仓库中的所有分支。
更改属性
我们可以任意分支跟踪origin/master,然后该分支会像master分支一样得到隐含的push
目的地以及merge
目标。这样一来,这个分支可以直接执行git push | git fetch
等手段推送/拉取远程仓库的master分支。
设置跟踪远程分支有两种方法
-
方法
- 通过远程分支检出一个新的分支:
git checkout -b xxx(分支名) origin/master
- 利用
git branch -u
命令:git branch -u origin/master xxx(分支名)
,如果就在该分支上,分支名可以省略
- 通过远程分支检出一个新的分支:
例子
初始状态:
目标:
步骤:
-
创建分支side,并提交一次
git checkout -b side
git commit
-
跟踪远程分支:
git branch -u o/master side
-
拉取并合并远程分支内容:
git pull --rebase o/master
-
将本地分支的最新修改推送至远程分支:
git push