天天看點

Git協作

  當你從遠端倉庫克隆時,實際上Git自動把本地的master分支和遠端的master分支對應起來了,并且,遠端倉庫的預設名稱是origin。

  要檢視遠端庫的資訊,用git remote:

Git協作

  或者,用git remote -v顯示更詳細的資訊:

Git協作

  上面顯示了可以抓取和推送的<code>origin</code>的位址。如果沒有推送權限,就看不到push的位址

  推送分支,就是把該分支上的所有本地送出推送到遠端庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠端庫對應的遠端分支上

Git協作

  如果要推送其他分支,比如dev,就改成:

  但是,并不是一定要把本地分支往遠端推送,那麼,哪些分支需要推送,哪些不需要呢?

  master分支是主分支,是以要時刻與遠端同步;

  dev分支是開發分支,團隊所有成員都需要在上面工作,是以也需要與遠端同步;

  bug分支隻用于在本地修複bug,就沒必要推到遠端了,除非老闆要看看你每周到底修複了幾個bug;

  feature分支是否推到遠端,取決于你是否和你的小夥伴合作在上面開發

  多人協作時,大家都會往master和dev分支上推送各自的修改

  現在,模拟一個你的小夥伴,可以在另一台電腦(注意要把SSH Key添加到GitHub)或者同一台電腦的另一個目錄下克隆:

Git協作
Git協作

  當你的小夥伴從遠端庫clone時,預設情況下,你的小夥伴隻能看到本地的master分支

Git協作

  現在,你的小夥伴要在<code>dev</code>分支上開發,就必須建立遠端<code>origin</code>的<code>dev</code>分支到本地,于是他用這個指令建立本地<code>dev</code>分支:

Git協作

  現在,他就可以在<code>dev</code>上繼續修改,然後,時不時地把<code>dev</code>分支<code>push</code>到遠端:

Git協作

  你的小夥伴已經向<code>origin/dev</code>分支推送了他的送出,而碰巧你也對同樣的檔案作了修改,并試圖推送

Git協作

  推送失敗,因為你的小夥伴的最新送出和你試圖推送的送出有沖突,解決辦法也很簡單,Git已經提示我們,先用<code>git pull</code>把最新的送出從<code>origin/dev</code>抓下來,然後,在本地合并,解決沖突,再推送:

Git協作

<code>  git pull</code>也失敗了,原因是沒有指定本地<code>dev</code>分支與遠端<code>origin/dev</code>分支的連結,根據提示,設定<code>dev</code>和<code>origin/dev</code>的連結

Git協作

  再pull:

Git協作

  這回<code>git pull</code>成功,但是合并有沖突,需要手動解決,解決的方法和分支管理中的解決沖突完全一樣。解決後,送出,再push:

Git協作

  要擷取伺服器遠端分支的資料有兩條指令可以使用除了上面使用過的pull指令之外,還有fetch指令

  $ git fetch origin 同步遠端伺服器origin上master分支的資料到本地

  使用fetch指令,隻是将origin的資料下載下傳到了本地,但本地的工作目錄隻有使用merge合并,才能更新為最新的内容

  $ git merge origin/master 合并遠端伺服器上的遠端分支master到本地分支master

  而如果使用pull指令,則相當于fetch和merge這兩個指令的合并

  $ git pull origin 同步遠端伺服器origin上master分支的資料到本地,并合并到本地分支master

  如果不是預設的master分支,而是其他分支,比如dev分支,則可以使用

  相當于

本文轉自  zddnd  51CTO部落格,原文連結:http://blog.51cto.com/13013666/1943074