
Git操作與git工作流
當我們談論git時,我們首先會想到版本控制和各種命令及概念。git基礎操作請看我的另外一篇文章【操作】git版本控制流入門命令FQ#1
我首先為【Git操作】做一個定義即git命令相關的操作,比如創(chuàng)建分之,合并,提交,撤銷等。
【Git工作流】定義為基于git版本控制工具,通過但不限于git命令的正確使用,用于完成版本控制,軟件交付的整個流程規(guī)范。
git工作流并不是指git相關的操作,當然git相關的操作是git工作流的基礎,git工作流更多的是說明基于git倉庫管理工具如何更好的開展軟件開發(fā)工作的一整套流程和規(guī)范。

業(yè)界主流有三種工作流模式
一 Gitflow工作流
第一種是Gitflow工作流, Gitflow工作流是經典模型,處于核心位置。
以下是一個以gitflow作為工作流的約束范例,可以參考實踐
相關術語
master主干
主分支,產品的功能全部實現后,最終在master分支對外發(fā)布。用于生產環(huán)境發(fā)布的完整代碼庫版本。master主干長期存在,并與生產環(huán)境的版本保持一致。
develop分支
開發(fā)分支,基于master分支克隆,開發(fā)編碼測試工作在此分支進行。主要使用git check -b 命令
Git版本控制,主要約定如下
開發(fā)人員以分支代碼為基準進行開發(fā),測試,并發(fā)布測試環(huán)境。以主干代碼為基準進行灰度環(huán)境,生產環(huán)境上線部署。原則上,當前主干代碼應該以當前線上運行的實際代碼保持一致。
主干合并規(guī)則
用于經過測試同事驗證通過的開發(fā)分支,開發(fā)人員收到測試郵件之后操作,將開發(fā)完成的工作合并到主干分支。主要使用git merge 命令
操作步驟
1 以當前主干為基準進行建立標簽里程碑。標簽標注以當前線上版本號命名。
2 整理代碼,以分支代碼為基準進行合并,更新主干代碼庫。
二 Forking工作流
Forking工作流是分布式github風格的,也叫做github工作流,強調項目fork 和pull request
我們看看go語言開源項目beego的代碼貢獻說明

看看官方說明文檔
github工作流程

iisues
iisues是提交建議,使用問題,軟件bug入口的入口。如果我們想參與一些開源項目,最開始的時候可以從錄入iisues,解決iisues開始。
如 https://github.com/apache/dubbo-admin/issues/421


官方說明文檔
https://guides.github.com/features/issues/
三 Gitlab工作流
Gitlab flow 的最大原則叫做"上游優(yōu)先"(upsteam first),即只存在一個主分支master,它是所有其他分支的"上游"。只有上游分支采納的代碼變化,才能應用到其他分支。
參考官方文檔 https://docs.gitlab.com/ee/workflow/gitlab_flow.html
在實際的開發(fā)團隊中,三種工作流方式一般都會混合使用,根據團隊特點,做一些整合。比如采用gitlab界面化系統(tǒng)管理代碼,并結合gitflow工作流進行開發(fā)。
本文著重提出了業(yè)界主流的三種git工作流方式,以及每種工作流的主要特點,并沒有細化到具體的使用場景和命令詳情。感興趣的讀者,可以以工作流為主線,參考網上對應的文檔。從根本上認識三種git工作流,有助于深化理解工作中具體的實際操作。
參考資料
https://github.com/oldratlee/translations/blob/master/git-workflows-and-tutorials/README.md