每一個倉庫都應該至少包含兩個主要分支 master
和develop
; master
用於正式發佈,develop
用於平常開發。html
// 克隆倉庫代碼
git clone 'xxxxx'
// 查看詳情
git remote -v
複製代碼
實際上git
自動把本地的master分支
和遠程的master分支
對應起來了而且遠程倉庫的默認名稱是origin
git
// 開發新功能時,請從develop分支
git checkout -b feature-* develop
複製代碼
在此分支上不斷的完善web
master
和
dev
分支上推送各自的修改,因此須要同步線上代碼
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
git checkout develop
// 合併分支
git merge --no--ff feature-*
// 刪除分支
git branch -d feature-*
複製代碼
該
--no-ff
標誌使合併始終建立一個新的提交對象,即便合併能夠經過快進來執行。這樣能夠避免丟失有關要素分支歷史存在的信息,並將全部添加了要素的提交分組在一塊兒。測試
平時默認的
git merge
沒法從Git歷史記錄中看到哪些提交對象一塊兒實現了功能—您將不得不手動讀取全部日誌消息。在此模式下還原整個功能(即一組提交)確實很頭疼。網站
從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
複製代碼
修補程序分支是從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'
$ git checkout開發
$ git merge --no-ff hotfix-1.2.1
複製代碼
git branch -d hotfix-1.2.1
複製代碼
// 將全部未提交的修改(工做區和暫存區)保存至堆棧中
git stash
// 查看當前stash中的內容
git stash list
// 恢復暫存中的代碼
git stash pop
複製代碼