使用Git進行多人協做開發

主要分支

每一個倉庫都應該至少包含兩個主要分支 masterdevelop; master用於正式發佈,develop用於平常開發。html

master分支

  • master 爲主分支,也是用於部署生產環境的分支,master 分支要確保穩定性
  • master 分支通常由 develop 以及 hotfix 分支合併,任什麼時候間都不能直接修改代碼

開發分支develop

  • develop爲開發分支,始終保持最新完成以及bug修復後的代碼
  • 通常開發新功能時,feature 分支都是基於 develop 分支下建立的

臨時性分支

功能分支(feature)

  • 爲了開發某種特定功能,從develop分支上面分出來的功能分支的名字
  • 功能分支一般僅存在於開發人員存儲庫中,而不存在於中origin。
  • 能夠採用feature-* (分支功能/分支名)的形式命名。

預發佈分支 (release)

  • 指發佈正式版本以前(即合併到master分支以前),咱們可能須要有一個預發佈的版本進行測試。
  • 發佈分支是從develop分支上面分出來的,預發佈結束之後,必須合併進develop和master分支
  • 能夠採用release-*的形式命名

修補bug分支 (fixbug)

  • 軟件正式發佈之後,不免會出現bug。這時就須要建立一個分支,進行bug修補。修補bug分支是從master分支上面分出來的。修補結束之後,再合併進master和develop分支
  • 它的命名,能夠採用fixbug-*的形式。

使用git進行平常開發

當咱們拿到一個git地址,首先進行代碼clone

// 克隆倉庫代碼
git clone 'xxxxx'
// 查看詳情
git remote -v
複製代碼

實際上git自動把本地的master分支和遠程的master分支對應起來了而且遠程倉庫的默認名稱是origingit

從develop創建功能分支

// 開發新功能時,請從develop分支
git checkout -b feature-* develop
複製代碼

在此分支上不斷的完善web

  • 多人協做時,你們都會往 masterdev分支上推送各自的修改,因此須要同步線上代碼
  • git pull origin develop意思是去獲取遠程倉庫中develop分支上的commits,而後把 origin/develop中的內容 merge到你目前的分支中
// 同步develop分支代碼
git pull origin develop
複製代碼

不斷的完善功能編輯器

  • 經過 git add git commit -m不斷的完善這個分支的功能
// 不斷的add commit 直到功能完善
git add 
git commit -m ''
複製代碼

功能開發完成post

  • 功能開發完成之後合併到develop,合併必定是在 feature/* 徹底開發完成而且 測試經過的狀況下進行合併操做,不能把有錯誤的提交上去
// 切換分支到develop
git checkout develop
// 合併分支
git merge --no--ff feature-*
// 刪除分支
git branch -d feature-*
複製代碼

--no-ff標誌使合併始終建立一個新的提交對象,即便合併能夠經過快進來執行。這樣能夠避免丟失有關要素分支歷史存在的信息,並將全部添加了要素的提交分組在一塊兒。測試

平時默認的git merge沒法從Git歷史記錄中看到哪些提交對象一塊兒實現了功能—您將不得不手動讀取全部日誌消息。在此模式下還原整個功能(即一組提交)確實很頭疼。網站

預發佈分支 release

從develop分支建立發行分支。例如,說版本1.1.5是當前的生產版本,咱們即將發佈一個大版本,develop準備好了「下一個版本」,咱們已經決定,這將成爲版本1.2(而不是1.1.6或2.0)。所以,咱們分支並給發行分支起一個反映新版本號的名稱url

#建立一個預發佈分支:
git checkout -b release-x develop
#確認沒有問題後,合併到master分支:
git checkout master
git merge --no-ff release-x
# 對合並生成的新節點,作一個標籤
git tag -a x
複製代碼

爲了保留在release分支中所作的更改,咱們須要將這些更改從新合併到中developspa

// 切換到分支'develop' 
git checkout develop
git merge --no-ff release-1.2
複製代碼

如今咱們真的完成了,能夠刪除發佈分支,由於咱們再也不須要它日誌

git branch -d release-1.2
複製代碼

修補分支 hotfix-*

修補程序分支是從master分支建立的。例如,說1.2版是當前生產版本,正在運行,而且因爲嚴重的錯誤而引發麻煩。可是變化develop仍然不穩定。而後,咱們可能會分支出一個修補程序分支並開始解決問題

// 切換到新分支「 hotfix-1.2.1」 
git checkout -b hotfix-1.2.1 master
// 加的-a參數能夠將全部已跟蹤文件中的執行修改或刪除操做的文件都提交到本地倉庫,即便它們沒有通過git add添加到暫存區
git commit -a -m 「將版本號加至1.2.1」 
複製代碼

在修復完成之後,提交此修復程序

git commit -m 「修復了嚴重的生產問題」
複製代碼

完成修補程序分支後,該bugfix須要合併回master,但也須要合併回develop,以確保該bugfix也包含在下一發行版中

  • 合併到master
// 切換到分支'master' 
$ git checkout master
// 獲取修復的內容
$ git merge --no-ff hotfix-1.2.1
// 標記版本
$ git tag -a 1.2.1
複製代碼
  • 合併到develop
// 切換到分支'develop' 
$ git checkout開發
$ git merge --no-ff hotfix-1.2.1
複製代碼
  • 刪除這個分支
git branch -d hotfix-1.2.1
複製代碼

git stash的以應用場景

  • 當正在dev分支上開發某個項目,這時項目中出現一個bug,須要緊急修復,可是正在開發的內容只是完成一半,還不想提交。這時能夠用git stash命令將修改的內容保存至堆棧區,而後順利切換到hotfix分支進行bug修復,修復完成後,再次切回到dev分支,從堆棧中恢復剛剛保存的內容。
  • 因爲疏忽,本應該在dev分支開發的內容,卻在master上進行了開發,須要從新切回到dev分支上進行開發,能夠用git stash將內容保存至堆棧中,切回到dev分支後,再次恢復內容便可。
// 將全部未提交的修改(工做區和暫存區)保存至堆棧中
git stash
// 查看當前stash中的內容
git stash list
// 恢復暫存中的代碼
git stash pop
複製代碼

參考文獻

相關文章
相關標籤/搜索