1. 程式人生 > >Git協作

Git協作

git

遠程倉庫

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

  要查看遠程庫的信息,用git remote:

技術分享

  或者,用git remote -v顯示更詳細的信息:

技術分享

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

推送分支

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

$ git push origin master

技術分享

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

$ git push origin dev

  但是,並不是一定要把本地分支往遠程推送,那麽,哪些分支需要推送,哪些不需要呢?

  master分支是主分支,因此要時刻與遠程同步;

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

  bug分支只用於在本地修復bug,就沒必要推到遠程了,除非老板要看看你每周到底修復了幾個bug;

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

抓取分支

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

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

技術分享

技術分享

  當你的小夥伴從遠程庫clone時,默認情況下,你的小夥伴只能看到本地的master分支

技術分享

  現在,你的小夥伴要在dev分支上開發,就必須創建遠程origindev分支到本地,於是他用這個命令創建本地dev分支:

$ git checkout -b dev origin/dev

技術分享

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

技術分享

  你的小夥伴已經向origin/dev分支推送了他的提交,而碰巧你也對同樣的文件作了修改,並試圖推送

技術分享

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

技術分享

  git pull也失敗了,原因是沒有指定本地dev分支與遠程origin/dev分支的鏈接,根據提示,設置devorigin/dev的鏈接

技術分享

  再pull:

技術分享

  這回git pull成功,但是合並有沖突,需要手動解決,解決的方法和分支管理中的解決沖突完全一樣。解決後,提交,再push:

技術分享

fetch和pull

  要獲取服務器遠程分支的數據有兩條命令可以使用除了上面使用過的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分支,則可以使用

$ git pull origin dev

  相當於

$ git fetch origin dev
$ git merge origin/dev


Git協作