Git基本原理及命令使用
Git簡明教程
Git工作流使用方式選擇
- 微型項目,使用集中式工作流。
- 小型項目,功能分支工作流。
- 中大型的互聯網項目,不斷需求迭代,一個版本接一個版本,參考並使用如下Git工作流。
Git工作流使用場景
當一個項目中有多個不同版本的需求迭代,每個版本由不同的開發人員參與開發,每個版本上線時間不一致。目前很符合大屏代理服務端接口的這種場景,可以遵循Git工作流規範。其他類似的項目模式,多人協作開發場景,亦可遵循此Git工作流規範。
Git工作流規範
Git工作流規範說明
1、 master分支是基礎分支,永遠是趨於最穩定的版本,並且受保護的,不允許直接merge其他分支到master分支。
release分支預發佈環境測試通過,發起merge request,請參考如下步驟2。
Accept merge request完成後,通過legit平臺或命令行方式創建本次上線的tag,並添加註釋說明。(tag:需求上線里程碑,同時也用於代碼回滾使用)
命令行方式:
-
創建tag git -a ‘master.tag.2.8.0’ -m ‘添加註釋說明’
-
將tag推送到遠程分支,git push origin master.tag.2.8.0
2、 release分支屬於臨時預發佈分支,從master分支拉取,用於QA迴歸測試,冒煙測試,正式上線前期的測試。
- 2.1 當一個需求迭代版本需要上線,可以直接從master分支拉出release分支。
命令規範:release命名根據本次需求升級feature來定。比如:release_child_v4.1.0
-
2.2 release分支創建完成,將測試通過的feature/x_4.1.0分支代碼通過legit代碼平臺發起merge request
操作步驟 (不同平臺可能略有差異,如Gitee跟Gitlab不同):
-
進入Merge Requests,點擊 +New Merge Request
選擇Source branch(功能分支),Target branch(目標分支-release分支),點擊Compare branches and continue
-
Title中簡述本次變更內容
Description中填寫本次變更的詳細內容:
1、新增專輯詳情頁V2版本接口
2、yyy
3、zzz
-
點擊Changes查看本次版本變更詳細代碼,自己可以詳細再過一遍代碼看看是否還有問題。
-
確認沒有問題,點擊 Submit merge request 按鈕提交,並通知代碼審覈人完成代碼審覈和accept。
-
2.3 代碼審覈人,進入legit平臺該項目中。
操作步驟:
-
點擊Merge Requests,點擊Changes查看代碼變更,並做審覈。
-
代碼審覈未通過,通過增加Comment,並告知代碼提交者進行修改,修改完成繼續發起merge request。
-
審覈通過,點擊Accept merge request 將代碼合併到release分支。
3、 develop分支屬於集成測試分支,從master分支拉取,多人開發的迭代版本集成到這上面,發佈到測試環境的分支。
develop分支也算臨時分支,需求迭代測試一段時間,可能會跟master版本差異較大,根據實際情況,考慮重新從master拉取分支,將各個feature分支代碼合併進來,再發布到測試環境中。
因爲項目中一般就一套測試環境,如果有多套,可以創建不同的develop分支,分開部署。
4、 local分支屬於開發人員本地分支。
基本都是從基準代碼master分支拉取的,一個功能模塊新建一個分支,利用好git多分支的優勢。
命令規範:feature/xxx_yyy_v4.1.0
5、 bugfix分支,從基準代碼master分支拉取,bug修復完成同步到你的本地開發local分支和develop集成分支一份。
命名規範:bugfix/xxx_yyy_v4.1.0
分支清理:
當一個需求迭代版本代碼開發完成,合併到master,打完tag上線平穩運行後 ,就可以將feature分支、release分支刪除掉了。
需求迭代一個階段後develop集成分支功能全部上線,下一個版本需求從master重新拉一個新的develop分支作爲集成分支。
開發代碼提交註釋:
明確寫清楚本次修改內容,儘量是每天提交一次,或者完成一個模塊功能提交一次commit。
Git 標籤版本號制定
Git tag 版本號規範:主版本號.次版本號.ISSUE版本號
示例:
Tag版本號:3.1.1
3:表示大版本,比如大的系統重構等。
1:表示功能迭代版本,每次新的需求迭代上線後 +1
1:表示ISSUE版本,在 3.1 功能版本下,修復一些列小問題,比如Bugfix等。修復一次版本 +1
版本升級舉例:
兒童4.0.0.0需求上線,變更爲:3.2.0
兒童4.0.0.0線上BUG修復,變更爲:3.2.1