11.Git分支-远程跟踪分支的概念、多个远程仓库的使用

1.远程跟踪分支的概念

  远程引用是对远程仓库的引用,包括分支、标签等等。html

 1.能够经过 git ls-remote <remote> 来得到远程引用的完整列表git

 2.git remote show <remote> 来获取远程分支的更多相关信息。数据库

 以下图所示,运行 git remote show origin 能够获得有哪些远程分支,pull和push分别是与哪一个远程仓库交互。服务器

  远程跟踪分支:远程跟踪分支是远程分支状态的引用,它们是你不可以移动的本地引用,记录的是你上次链接到远程仓库时,远程分支所处的状态,例如:通常本地会存在一个远程跟踪分支origin/master,跟踪的是远程分支master的状态(这个master是远程分支master,不是本地分支master)。网络

  假设你的网络里有一个在 git.ourcompany.com 的Git服务器。 若是你从这里克隆,Git 的 clone 命令会为你自动将其命名为 origin,拉取它的全部数据,建立一个指向它的 master 分支的指针,而且在本地将其命名为 origin/master。 Git 也会给你一个与 origin 的 master分支在指向同一个地方的本地 master 分支,这样你就有工做的基础。fetch

  若是你向远端推送了一个分支dev,那么远端会产生dev分支,在本地对应的会有一个指向远端分支的origin/dev指针,也就是远程跟踪分支。网站

以下图所示,远程仓库有一个分支称做为master,其在本地仓库对应着一个远程跟踪分支origin/master,同时本地还有一个称做为master的本地分支。spa

  当你在本地master上作了一些提交操做以后,同时其余同事提交了更新到远程分支master,这时候远程分支与本地分支的状况可能会出现以下状况:3d

  能够发现,远程跟踪分支origin/master并无发生移动,本地master和远程仓库master朝着不一样的方向在发展。也就是说,只要你不与远程仓库进行链接,远程跟踪分支就不会发生变化。指针

  如今远程仓库有了新的更新,你须要获取这些更新到你的本地仓库,能够运行

 git fetch origin ,会从远程仓库抓取本地没有的数据,而且更新到本地数据库,移动远程跟踪分支origin/master指向新的、更新以后的位置。

这条命令会将远程仓库master分支上的内容拉取到远程跟踪分支origin/master下面,并不会是拉取到本地分支master下,工做区的内容不会发生改变。以下图所示:

  在抓取了远程分支的代码以后,能够将其merge进本地分支master中,使用 git merge origin/master 。

2.多个远程仓库的使用

  有时候,会存在多个远程仓库,好比有时候会存在一个远程仓库,主要用于大家内部小组的开发工做,这个远程仓库是从另外一个远程仓库fork过来的。这时候,你能够运行 git remote add <remote> ,添加一个远程仓库引用到当前项目,那么你就能够运行 git fetch <remote> 来获得你新加的远程仓库的代码了。

  例子:

  你fork了一个远程仓库A到本身的GitHub帐号下,名字为B,而后你将本身帐号下的B仓库 clone到了本地,进行了一些提交操做,这时候,你发现原始的A有了一些更新,这时候,你能够经过git remote add A和git fetch A将原始仓库A的更新抓取到本地,而后进行merge以后,再将本身本地仓库进行的相关工做一块儿提交到远程仓库B,而后给远程仓库A发pull request操做来合并你所进行的开发工做到A仓库。(https://www.cnblogs.com/morethink/p/8907980.html)

  还有一种方法,能够在GItHub网站上,直接从A将全部的更新拉取到B,经过new 一个pull request就能够了。(https://www.cnblogs.com/eyunhua/p/8463200.html)

相关文章
相关标签/搜索