GIT工做流

前言: 關於git的使用, 以前就已經寫過一篇博客了: http://www.cnblogs.com/0zcl/p/6874588.html. 看完這篇博客, 你就基本可使用git了. 這種使用, 僅限了一兩人的開發. 若是團隊有多人, 並且位置較分散. 那這開發就更須要規範了. 所以, 這篇博客來講一下GIT工做流.html

 

原本覺得我用git命令行能夠解決GIT工做流上的問題,但其實只用命令行仍是蠻困難的。下面先看看GIT的規範, 這部分比較無聊, 下面會圖文並茂的, 好吧. 若是你瞄了一眼, 以爲這SB博客, 寫得太low了, 而後就關掉這篇博客, 我感受仍是錯過一些東東.git

1、提交規則

[feature] 新增功能、更新的提交,例如「[feature] add a new data layer for reading jpeg images」性能

[bugfix] bug修正的提交,有bugid的補充bugid,例如「[bugfix] now data layer reads single-channel images correctly」測試

[optimize] 優化的提交:性能等方面,feature分之下的單次優化要指明,優化分支下的用[feature]便可優化

[refactor] 代碼等重構的提交,feature分之下的單次重構要指明,重構分支下的用[feature]便可spa

  • 每次提交應該只能有一個修改,不能將多個邏輯修改放在一個提交中;不可將一個邏輯修改分紅多個提交
    • 例如: 同時修復一個bug,同時作了重構或優化,就要把提交分紅兩個(bugfix、refactor/optimize)。
  • 每次merged到develop分支的代碼必須爲可運行的,而且保證多平臺可用
  • 多人協做過程當中若是在開發同一個feature,不能夠在同一個feature分支進行開發,須要各自拉出新feature分支獨立開發,完成後merge到共同的feature分支
  • 每日至少一次Git提交,防止代碼丟失
  • feature分支在完成後合併到develop

 

2、版本號的定義

A.B.C。例如1.1.0。按照功能來定:命令行

  • 若是是大的版本更新,則A+1,而且B和C都設置爲0;
  • 若是是小的版本更新,則B+1,而且A不變,C設置爲0;
  • 若是是修復bug的版本更新,則C+1,而且A和B都不變。

 

3、Git工做流

添加一個工程文件之後,點擊:(倉庫)——(git flow)——(初始化倉庫)3d

  • 這個的目的是爲了方便git各類分支的自動生成,同時也是爲了後續工做流的方便使用。

develophtm

當前版本最新開發進展,未測試或者測試中,對於單人開發小模塊能夠直接提交,多人協做及大模塊必須經過合併具體功能子分支,接受來自feature,release,hotfix的合併。blog

  • 建立分支必須經過(git flow)——(創建新的功能)從develop來進行

feature分支

這個分支主要是爲了各類研發方案執行使用。(必須推送遠端,完成feature後合併到develop,以及測試下是否能夠執行)

  • 分支命名以版本號+開發者+模塊的形式來,例如:feature/1.0.0_aidy_newfeature。
  • 當分支特性開發完成後合併到develop,主要是經過(git flow)——(完成功能)來進行合併,或者手動合併。
  • 當出現合併衝突時,記得與衝突者當面一塊兒溝通與合併,並確認效果ok。

release分支

這個分支主要是給研發方案差很少肯定時使用,主要是爲了fixbug等。(完成feature後,必須推送遠端,以及測試下是否能夠執行)

  • 這個分支只來自develop,當研發差很少了之後,就開始作release分支。
  • 命名爲版本號,例如1.0.0。主要是經過(git flow)——(創建新的發佈版本)來進行。
  • 當realease分支差很少了,就經過(git flow)——(完成發佈版本)來進行。並會打一個版本號的標籤。
  • 完成後併入develop和master。

hotfix分支

主要用於最新發布版本的bug修復。

當前版本

  • 就經過(git flow)——(創建新的修復補丁)來進行。
  • 當完成之後,經過(git flow)——(完成新的修復補丁)來進行合併。
  • 當出現合併衝突時,記得與衝突的修改者當面一塊兒溝通與合併,並確認效果ok

 

以上來自GIT規範,然而看完GIT規範感受仍是沒有頓悟的感受。so,必須得會使用smartgit呀。

 

4、使用SmartGit

看完GIT規範,你已經知道,feature分支是平時開發功能用的,完成feature分支開發後,合併到develop分支,合併成功後,刪除該feature分支。這用smartgit能夠輕鬆實現,用命令行的話是比較麻煩,但也能夠實現呀。如今的問題是,用smartgit如何輕鬆實現建立feature分支,刪除feature分支?

點擊Git-Flow,再點擊configure,可出現以下圖:若是你找不到下圖這個界面,那必然是你操做的姿式有問題。

看到沒有,神奇呀,在上圖中,你只需點擊OK,GIT就會自動幫你建立feature, release, hot-fix, develop分支。這超牛逼的。這步操做很重要。完成這步操做後,會出現develop分支,此時須要把develop分支推到遠程。

正常狀況下,你遠程倉庫應該有兩個分支了,分別是master和develop分支。若是沒有,把它們推到遠程

啥,不知道怎麼push?有兩種方式,在上圖的左下角的Branches窗口下,你能夠點擊master分支,而後鼠標右擊,再點擊push to ;也能夠在左下角的Branches窗口下,雙擊要push的分支A,此時分切換到A分支,而後再點擊上圖左上方的Push推到遠程。

 

5、feature分支的使用

OK,此時遠程倉庫應該有兩個分支master/develop,然而這還遠遠不夠呀,你看到同事的項目有一個feature分支。so,你確定也是須要feature分支的。

點擊Git-Flow,會出現下圖。若是沒出現Start Feature; Start Release這些,必然是你最開始的configure有問題。

點擊Start Feature來建立一個feature分支,分支命令要參考命名規範。

如今你已經有一個feature分支了。在該分支提交些東西,commit後,提交到遠程。你會驚喜的發現遠程的倉庫出現feature分支

 

如今你能夠不斷地開發,提交代碼到feature分支上,但feature分支只負責一個功能的開發而已,當這個功能開發完成後,必然須要把該feature分支刪除

簡單粗暴地說,就是當feature/0.0.2_zzy_example分支負責的功能開發完畢時,須要把feature分支合併到develop分支,合併完成後,feature分支刪除,此時遠程倉庫就看不到feature/0.0.2_zzy_example分支。

其實smartgit已經幫咱們簡化了工做。牛逼呀。

當你建立feature分支時,會自動切換到feature分支。完成功能開發後,想把feature分支合併到develop分支,如何作呢?

只需點擊Git-Flow,就會出現下圖。注意,此時你應該是處於feature分支的:

看到上圖的Delete feature branch沒,當你合併完成後,就會把feature分支刪除。

接下來你須要把develop分支推到遠程。你會發現遠程的feature分支不見了

以上,是feature分支開發的流程。

 

6、發佈版本

今天,團長想考下git方面的操做。給我一個需求:

先來看看GIT規範對於release分支是如何介紹的:

release分支

這個分支主要是給研發方案差很少肯定時使用,主要是爲了fixbug等。(完成feature後,必須推送遠端,以及測試下是否能夠執行)

  • 這個分支只來自develop,當研發差很少了之後,就開始作release分支。
  • 命名爲版本號,例如1.0.0。主要是經過(git flow)——(創建新的發佈版本)來進行。
  • 當realease分支差很少了,就經過(git flow)——(完成發佈版本)來進行。並會打一個版本號的標籤。
  • 完成後併入develop和master。

第一步

先建立一個release分支:點擊Git-Flow,再點擊start release:

輸入release分支名,分支名參考GIT規範。

 

第二步:能夠在release分支commit, push到遠程。此時你的遠程除master, develop外,應該得有一個release分支

 

第三步:發佈版本

點擊finish,就會發布版本啦,這裏須要給版本打一個tag,tag默認會自動顯示爲你的版本號。同時會把release合併到master與develop分支。再同時發佈以後,會刪除該release分支。

 

此時遠程以下顯示:沒有release分支。多了一個Tags版本:

至此,團長交待的任務完成!

 

 

7、附本人測試用了GIT分支圖:

 

 

8、總結:

  1. 因爲最開始就沒用好smartgit,好比下面這張圖的操做。以前就沒用到,致使後面的操做不順。
  2. 不要用命令行,不要用命令行,不要用命令行。命令行操做add, commit, push還能夠,但對於分支操做,版本發佈,用smartgit,用smartgit,用smartgit。
  3. 我想git這塊我頓悟了。佛系佛系,喝懷奶荼冷靜一下。

相關文章
相關標籤/搜索