二、远端分支追踪和push
1、分支的远程追踪
首先我们来看一个示例:
首先我们通过 git clone 操作克隆了一份代码,然后在本地的master分支上通过 git checkout -b bugfix01分支并切换到该分支上,并且在远端通过fakeTeamwork操作创建了一个远端提交。
接着我们在bugfix01分支上做了一次提交。
此时此刻我们在bugfix01分支上想拉取远端最新的代码,执行了git pull操作。从下方来看,是不被允许的,并给出了提示 “bugfix01 is not a remote tracking branch! I dont know where to push”,大概意思是bugfix01没有一个正在追踪的远程分支,不知道从哪个分支上进行拉取。
接下来要做的事情是在创建分支就给我们创建的新的分支指定一个追踪的远程分支,这样就可在我们创建的新分支上来pull远端分支中的内容了。下方是具体操作:
首先我们通过 git checkout -b bugfix02 o/master 命令创建并切换到了bugfix02上,后边所添加的o/master分支名就是bugfix02所要追踪的远程分支。
因为我们为bugfix02添加和远程追踪分支,我们就可以在bugfix02分支上通过 git pull 命令来拉取 o/master分支上的相关内容。具体如下所示。
2、push到远端
接下来我们要聊到就是在当前操作分支上将将本地的其他分支push到远端。具体操作如下所示:
下方的操作我们事先将HEAD指针指向了C0。
然后执行 git push origin foo 操作将foo分支上的内容push到远端,push完毕后,本地的o/foo分支也会跟着变动,如下所示。
同样,使用 git push origin master 命令,可以将本地的master分支上的提交push到远端的master分支,并修改本地的远端o/master分支的指向。
因为在该操作中foo追踪了远端的o/foo分支,所以可以push到远端的foo分支上。
上面将相关分支同步到远端所对应的分支上,比如将本地的master分支push到远端的o/master分支上。而接下来要做的事情是将本地的 a分支push到远端的b分支上,将本地的b分支push到远端的a分支上。具体导致如下所示:
下方我们通过 git push origin foo:master 操作将本地foo分支上的提交push到远端的master分支上。
通过 git push origin master^:foo 操作,将本地的master分支之前的所有分支提交到远端的foo分支上。
上述冒号后方的分支名所对应的就是远端的分支。
三、抓取远端操作
1. fetch origin
上面演示了push origin 的操作,接下来我们可以看一下fetch origin的操作。
我们可以通过 git fetch origin foo:master 来将远端的master分支上的内容同步到本地的foo分支上,当然这个foo分支也要有对应的追踪远端的。
我们还可以通过fetch origin或者push origin来创建和删除相关分支。下方左图是我们要完成的目标,右图是目前现状。我们要做的是通过 fetch origin 命令来删除foo分支,然后也是通过fetch origin命令来创建一个barf分支。