在上一篇博客Git】使用SourceTree克隆GitLab代碼倉庫中已經克隆了遠程倉庫,下面學習一下如果在本地進行修改並提交到遠程倉庫。
一、Git工作流初始化倉庫
點擊Git工作流。
這裏有幾個分支:
應該長期存在的兩個核心分支:
- master,該分支存放對外發布的版本,任何時候該分支都是穩定的發佈版。不可以直接在該分支push 代碼。
- develop,該分支的代碼存放的是達到穩定並且準備發佈時的,新功能開發都是基於此分支
此外還有三種短期分支:
- feature,功能分支,進行新功能的開發將在此分支上進行。該分支的代碼基於develop 並且最終會合並回develop 分支。
- hotfix,補丁分支,進行線上問題修復將在此分支進行,該代碼分支基於master 並且最終將合併會develop、master 分支。
- release,release預發佈分支。
幾個分支具體的工作流程是:
- 當進行新功能開發時,需要基於develop分支拉取feature分支進行開發,如增加了一個功能,應該基於develop分支創建 feature/news 分支。
- 當功能開發完畢時,將提交merge request,將該功能合併到develop 分支。
- 當所有feature 功能開發完畢,且都已合併回develop,開發自己測試完畢後。準備創建預發佈版本,就可以基於develop創建release分支。此時測試人員可以基於該版本release進行測試,發現了問題,則在release分支上進行問題的修復。
- 當具備上線條件時,需要將release分支合併到master和develop分支,同時需要打tag,然後進行上線操作,線上發佈的爲master分支。
- 當需要修復線上bug時,需要基於master創建hotfix分支,當修復且驗證完畢後,將hotfix分支合併回master分支,同時爲了保證該hotfix包含在下一個發行版中,同時需要合併回develop分支,同時需要打tag。最後刪除hotfix分支。
點擊確定。
完成之後左側就多了一個develop分支。
二、建立新分支
再次點擊Git工作流,會彈出對話框選擇下一個流動作。
這裏選擇建立新的功能。
填入功能名稱,最好是可以反映這是一個什麼功能,這裏僅做測試用。默認的就是基於develop分支,點擊確定。
完成之後,左側出現了feature/test分支。
三、開發新功能
現在我工作在feature/test分支,它是基於develop分支的。
新建了一個featuretest.txt文件。
在sourcetree的WORKSPACE點擊文件狀態。
這時在未暫存文件裏面出現了我新增的這一個文件。
點擊“+”暫存這一個文件。
就將文件暫存了。
在最下方的對話框中填寫本次修改的描述,然後點擊提交。
這是將修改提交到本地倉庫。
這時再次點擊Git工作流。
選擇下一個流動作爲完成功能。
表明要將feature/test分支合併到develop分支。
完成之後,本地的feature/test分支已經被刪除。
四、提交到服務器
由於現在develop分支還只存在於本地,遠程倉庫並沒有。這裏先在develop分支上選擇拉取
將遠端master分支上的代碼拉取到本地develop分支。
完成之後點擊推送,選擇將本地develop分支推送到遠程develop分支,遠程分支若不存在,則會自動新建。
完成之後,在gitlab上查看已經多了一個develop分支
develop分支上有新增的featuretest.txt文件。
現在如果代碼管理者接受了這一個提交併且認爲可以合併到master分支,那麼合併之後,開發人員在本地切換到master分支,拉取最新的代碼。
master分支已經合併了上次develop分支的修改。
總結一下,開發流程是:
- 每次開發新功能前都先從服務器上拉取最新的代碼。
- 開發人員基於develop分支在本地新建具體的開發分支,進行開發,提交到本地。
- 開發完成將本地的開發分支合併到本地的develop分支。
- 推送到服務器之前再次拉取最新的代碼,解決衝突,再次提交。
- 將本地develop分支的修改推送到遠端develop分支。
- 等待代碼管理人員將穩定的遠程develop分支合併到master分支。