廊坊新聞網-主流媒體,廊坊城市門戶

    [Git]Git Flow 工作原理

    2023-03-12 21:18:39 來源:騰訊云

    一、 Git Flow 工作模型的原理

    無規矩不成方圓,但是規矩太多了,則感覺到束縛。我們一個人工作的時候喜歡無拘無束,想怎么干就怎么干,沒有人評判,沒有人檢驗。時間久了就會盲目自大,以為增刪改查熟悉業務就能夠搞定一些。但是當項目逐漸擴大,原來的靈活逐漸變成了混亂,原來的快速迭代因為過于隨意的代碼,而開發進度遲遲不前。掌握一種規范,便在處理類似問題的時候有章可循,也能夠快速的融入一個團隊。另外所謂規范,可以說是比較好的實踐,按照規范來,項目也能穩健的發展。


    (資料圖片僅供參考)

    Git Flow 就是如何使用git 分支的一種規范,或者叫做推薦。

    根據Git Flow 的推薦,我們要將Git 的分支分為 masterdevelophotfixreleasefeature這五個分支。各種分支分別負責不同的功能,平時開發的時候各司其職,因此會有比較小的沖突率。那么可以用這些減少沖突的時間,少加會班,多有點自己的生活豈不快哉。一圖勝千言:

    Git flow工作流程

    master 分支

    master 分支主要方穩定、隨時可上線的版本。這個分支只能從別的分支上合并過來,一般來講,從develop 上合并,或者從bugfix 分支上合并過來。不能直接在master 分支上進行commit文件。因為是穩定的版本,所以每次版本發布都要在這個分支上添加標簽(tag)。

    develop 分支

    develop 分支是所有開發分支的母體,所有的開發分支都要從develop上切出來,開發完成之后最后都要合并到develop上。

    hotfix 分支

    hotfix 分支用來修復生產中的緊急bug,由于develop分支尚處于開發過程中,代碼不穩定,不能直接應用于生產。所以從master分支上切出一個分支,修復完成之后合并到master分支,并且合并到develop上。

    release 分支

    release 分支可以稱之為預發布的版本。當我們認為develop版本的代碼已經趨于成熟,我們可以打一個release分支。在release 分支上測試完成之后,要將代碼合并到master分支和develop上。master 分支是線上版本,而合并到develop版本是因為,在測試過程中,一些細節的東西可能會修改,因此這些優化的內容也應該合并到最終版本以及開發版本中。

    feature 分支

    feature 分支是最經常使用的分支了。當我們收到一個新的開發功能時,應該在develop分支上切出一個feature分支。用來完成新功能的開發,開發完成之后,要合并進develop分支上。

    二、 Git Flow 工具的使用

    基本上各種git的客戶端軟件都會支持Git Flow 工作模型。sourcetree 上使用git flow 工作模型就很流暢,體驗很好。但是為了全平臺上通用,以及理解原理,快速上手。我們來學習下Git Flow 的命令行操作。

    git flow 是一種git的使用規范,當然也有相應的工具集,命令行命令讓我們使用。

    1、起步

    安裝git flow

    brew install git-flow-avh

    初始化git flow 工具庫

    git flow init之后都按照默認的去配置,直接按enter鍵繼續。

    2、feature 分支操作

    增加feature新特性分支

    適用場景,需要開發新功能

    git flow feature start your roverliang/addlist

    示例:

    roverliang$ git flow feature start roverliang/addlistSwitched to a new branch "feature/roverliang/addlist"Summary of actions:- A new branch "feature/roverliang/addlist" was created, based on "develop"- You are now on branch "feature/roverliang/addlist"Now, start committing on your feature. When done, use:     git flow feature finish roverliang/addlistroverliang$ git branch  develop* feature/roverliang/addlist  master

    完成新特性這個動作執行的是下面的流程:

    合并 addlist 分支到 develop刪除這個新特性分支切換回 develop 分支
    git flow feature finish roverliang/addlist

    示例:

    roverliang$ git flow feature finish roverliang/addlistSwitched to branch "develop"Your branch is up to date with "origin/develop".Already up to date.Deleted branch feature/roverliang/addlist (was 2e1b475).Summary of actions:- The feature branch "feature/roverliang/addlist" was merged into "develop"- Feature branch "feature/roverliang/addlist" has been locally deleted- You are now on branch "develop"roverliang$ git branch* develop  masterroverliang$

    獲取一個發布的新特性的分支

    git flow feature track origin MYFEATURE

    3、release 分支操作

    準備release 版本

    git flow release start RELEASE [BASE]你可以選擇提供一個 [BASE]參數,即提交記錄的 sha-1 hash 值,來開啟動 release 分支. 這個提交記錄的 sha-1 hash 值必須是"develop" 分支下的。

    示例:

    roverliang$ git branch  develop  feature/test* masterroverliang$ git log --pretty=oneline -32e1b475f9825275aefa0892cfe5259aaac9a3483 (HEAD -> master, origin/test2, origin/master, origin/feature/test, origin/develop, feature/test, develop) delte some content2d22f306d2dca363b8aaa05743be342a505aabb0        renamed:    demo.txt -> test.txtfbf025e210952c3cdb10e219c4ee5f82b9f36327        modified:   demo.txtroverliang$

    發布release 版本

    git flow release track RELEASE

    完成release 版本

    相當于執行以下幾個動作:

    歸并 release 分支到 "master" 分支用 release 分支名打 Tag歸并 release 分支到 "develop"移除 release 分支
    git flow release finish RELEASE

    4、bugfix 分支操作

    緊急修復的需求:

    緊急修復來自這樣的需求:生產環境的版本處于一個不預期狀態,需要立即修正。有可能是需要修正 master 分支上某個 TAG 標記的生產版本。

    開始緊急修復,開啟hotfix 分支

    git flow hotfix start VERSION [BASENAME]VERSION 參數標記著修正版本。你可以從 [BASENAME]開始,[BASENAME]為finish release時填寫的版本號

    完成緊急修復

    當完成緊急修復分支,代碼歸并回 develop 和 master 分支。相應地,master 分支打上修正版本的 TAG。

    git flow hotfix finish VERSION

    關鍵詞:

    性色av极品无码专区亚洲| 亚洲国产成人超福利久久精品| 亚洲最大中文字幕| 久久精品国产亚洲AV麻豆~| 亚洲人成人网站在线观看| 亚洲第一页日韩专区| 精品国产亚洲AV麻豆| 朝桐光亚洲专区在线中文字幕| 亚洲乱码av中文一区二区| 亚洲第一成年免费网站| 亚洲精品无AMM毛片| 亚洲av日韩精品久久久久久a| 亚洲成在人线在线播放无码| 亚洲国产精品无码久久久秋霞1| 亚洲精品国产首次亮相| 日韩亚洲人成在线综合| 国产亚洲成在线播放va| 亚洲国产精品不卡毛片a在线| 亚洲一区日韩高清中文字幕亚洲| 久久精品亚洲男人的天堂| 曰韩亚洲av人人夜夜澡人人爽| 国产亚洲精品成人a v小说| 亚洲熟妇无码八AV在线播放| 国产精品国产亚洲精品看不卡| 久久精品夜色国产亚洲av| 亚洲黄色免费观看| 亚洲国产精品网站久久| 在线观看日本亚洲一区| 亚洲GV天堂GV无码男同| 亚洲av无码天堂一区二区三区| 国产国拍亚洲精品福利| 精品亚洲综合在线第一区| 亚洲av无码国产精品色午夜字幕| 久久久久亚洲av无码专区蜜芽| 久久亚洲精品人成综合网| 亚洲制服丝袜在线播放| 亚洲色无码国产精品网站可下载| 亚洲av无码成人精品国产| 亚洲熟妇少妇任你躁在线观看无码| 亚洲午夜福利717| 4480yy私人影院亚洲|