git-flow使用指南
1.簡介
- git-flow是基于Git Flow工作流模型的工具,了解Git Flow 模型。它可以使開發(fā)者更方便的進行版本的控制,使用該工具,便不需要將Git-Flow模型的命令和順序都記在腦子里。
- 一旦安裝了git-flow,你將會擁有一些擴展命令,這些命令將會在一個預定義的順序下執(zhí)行多個操作,這就是我們的工作流程。它僅僅是非常聰明有效地把標準的 Git 命令用腳本組合了起來。
2.安裝
2.1 在 Mac 安裝
brew install git-flow
2.2 在 Linux 安裝
sudo apt-get install git-flow
2.3 在 Windows 安裝
- util-linux package,libintl,libiconv。進入這三個鏈接,把每個鏈接中的二進制文件下載,分別解壓出getopt.exe、libint13.dll、libiconv2.dll三個文件,并復制到Git的bin目錄下。
- 將GitHub上面的git-flow資源克隆到本地(可在Git目錄下執(zhí)行,使生成的gitflow文件在Git目錄中)
$ git clone --recursive git://github.com/nvie/gitflow.git
- 執(zhí)行cmd命令
//Git的安裝路徑隨著自己的不同去更改。
C:\Program Files (x86)\Git\gitflow>contrib\msysgit-install.cmd "C:\Program Files (x86)\Git"
3.初始化
$ git flow init
- 使用該命令初始化時,會詢問關(guān)于幾個分支的命名,強烈建議使用默認的名字。
- 初始化之后,git-flow會自動幫你創(chuàng)建master分支和develop分支,并且切換到develop分支。
- 初始化時候,項目是否已經(jīng)包含一個Git倉庫并不重要,這個init操作可以在已有的git倉庫使用。
- 常用情況,當倉庫已經(jīng)關(guān)聯(lián)遠程倉庫,此時我們只需要執(zhí)行g(shù)it-flow初始化命令,就相當于執(zhí)行了本地創(chuàng)建develop分支,拉取遠程develop分支的最新內(nèi)容,關(guān)聯(lián)遠程的develop分支。(一般遠程倉庫都有一個develop分支)
4.功能開發(fā)
新功能的開發(fā)是基于develop分支的
4.1 開始新功能
//分支名默認是為feature/分支名,該名字應(yīng)能涵蓋整個新功能
$ git flow feature start 分支名
- 執(zhí)行之后,會基于develop分支創(chuàng)建一個功能分支,并自動切換到該分支。
4.2 發(fā)布新功能
如果團隊協(xié)作開發(fā)一個新功能,此時就有必要將本地的新功能分支推送到遠程倉庫
$ git flow feature publish 分支名
- 執(zhí)行之后,在遠程創(chuàng)建該分支,以及進行關(guān)聯(lián),并切換到該分支。
4.3 取得遠程的新功能分支
團隊合作開發(fā)同一個新功能的時候,拉取遠程的新功能分支到本地
$ git flow feature pull origin 分支名
- 執(zhí)行之后,會在本地創(chuàng)建一個分支,并拉取遠程最新的提交,自動切換到該分支。
4.4 關(guān)聯(lián)遠程分支
用于本地功能分支關(guān)聯(lián)遠程分支,一般很少用到,前面的命令都會自動關(guān)聯(lián)了。
$ git flow feature track 分支名
4.5 完成新功能
//在功能分支執(zhí)行Git的原生命令,add和commit之后,執(zhí)行
$ git flow feature finish 分支名
// 執(zhí)行之后便可以執(zhí)行原生的push,將本地的develop分支推送到遠程
- 執(zhí)行該命令,會將該分支合并到develop分支,并切換回develop分支,刪除該功能分支。
- 如果是團隊協(xié)作開發(fā)同一個功能的話,便執(zhí)行commit命令即可,等協(xié)作共同完成之后,確定該分支不再需要了,就可以將最新的功能分支合并到develop分支,刪除該分支。
5.發(fā)布
當develop分支的代碼已經(jīng)是一個成熟的release版本,即它已經(jīng)包括了所有的新功能和必要的修復。
5.1 創(chuàng)建release
$ git flow release start 版本號
- 執(zhí)行之后,會在本地develop分支上創(chuàng)建一個release/版本號 分支,并切換到該分支。
5.2 發(fā)布release
$ git flow release publish 版本號
- 在遠程倉庫創(chuàng)建該分支,并進行關(guān)聯(lián),其他開發(fā)者可以拉取該分支并在該分支提交內(nèi)容。
5.3 取得遠程的release分支
$ git flow release track 版本號
- 執(zhí)行之后,在本地創(chuàng)建該分支,并拉取最新的提交,關(guān)聯(lián)遠程。
5.4 完成release
$ git flow release finish 版本號
執(zhí)行該操作會執(zhí)行下面一系列操作
- git-flow會拉取遠程的最新提交。
- release會被合并到master和develop分支。
- release的提交會被打上標記。
- 刪除release分支,并且切換回develop分支。
6.緊急修復
6.1 創(chuàng)建hotfix
$ git flow hotfix start 錯誤名
- 該操作會在master分支創(chuàng)建一個hotfix分支,并切換到該分支。
- (如果有必要發(fā)布到遠程)關(guān)于推送遠程的一些處理和之前的release和feature分支處理一樣,在此不再贅述。
6.2 完成修復
$ git flow hotfix finish 錯誤名
該操作和finish掉release分支進行的一系列操作相似。
7.回顧
- git-flow并不會為Git擴展任何新的功能,它僅僅使用了腳本來捆綁了一系列 Git 命令來完成一些特定的工作流程。
- 依舊可以使用Git的一些原生命令,而且push遠程的操作git-flow并沒有幫我們執(zhí)行。
- 使用 git-flow 并不是必須的。當積攢了一定的使用經(jīng)驗后,很多團隊會不再需要它了。當你能正確地理解工作流程的基本組成部分和目標的之后,你完全可以定義一個屬于你自己的工作流程。
歡迎關(guān)注本人博客:https://allen-yu.com/