精通git中文版(连载十四)

4.5 远端分支(Remote Branches)

  远端分支用来引用你远端库的分支状态。它们是你不能移动的本地分支。它们被自动移动无论什么时候你做了一些网络通信。远端分支的行为就像是一个书签它用来提示你最后连接到的远端库在哪里。

  它们利用格式(remote)/(branch)。例如,如果你想看一下你最后通信的那个origin远端上的master分支的现状,你应该检查origin/master分支。如果你正在和一个伙伴一起工作在一个问题上(issue),而且他上传了一个iss53分支,你可能有你自己的本地iss53分支,但server上的分支指向了origin/iss53的提交。

  这可能会有一点混淆,让我们来看一个例子。假定你有一个git server位于网络上的git.ourcompany.com上。如果你从这个servercloneGit会自动为你把它命名为origin,下载所有它的数据,创建一个指针指向它的master分支所在的位置,在本地命名为origin/master,但你不能移动它。Git也给了你你自己的master分支它起始于与originmaster分支相同的位置,以便你可以从这里工作(如图3-22)


  如果你在你本地的master分支上做了一些工作,与此同时,其它人向git.ourcompany.com上传并更新了其master分支,那么你的历史分别向前移动。同时,只要你未与你的origin 服务器联系,你的origin/master指针不会移动(如图3-23):

 

  为同步你的工作,你运行一个git fetch origin命令。这个命令查找origin是哪个(本例中是git.ourcompany.com),从其上获取任何你还没有的数据并更新你的本地数据库,移动你的origin/master指针到新的位置(如图3-24)

  为了演示具有多个远端服务器以及远端分支上这些远端项目看起来的样子,让我们假定你有另外一个内部的Git服务器,它只被你们的一个sprint小组作为开发来使用。这个服务器位于git.team1.ourcompany.com。你可以增加它作为一个新的你当前工作的项目的远端参考:运行我们在第2章讲解的git remote add命令。命名这个远端为teamone,这将是你那个全URL的短名(如图3-25)

  现在,你可以运行git fetch teamone来获取所有远端服务器teamone上有的而你还没有的所有数据。因为现在那个服务器是你的origin服务器的一个子集,Git并没有获取数据而只是设置了一个远端分支称为teamone/master它指向teamonemaster分支指向的那个提交。(如图3-26):


 

posted @ 2011-09-06 18:10  xiaoxuanzi  阅读(835)  评论(0编辑  收藏