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)

相關文章
相關標籤/搜索