亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Git工程開發實踐(四)——Git分支管理策略

發布時間:2020-06-14 09:26:19 來源:網絡 閱讀:7650 作者:天山老妖S 欄目:軟件技術

Git工程開發實踐(四)——Git分支管理策略

一、Git版本管理的挑戰

Git是非常優秀的版本管理工具,但面對版本管理依然有非常大得挑戰。工程開發中,開發者彼此的代碼協作必然帶來很多問題和挑戰:
A、如何開始一個Feature開發,而不影響其它Feature?
B、由于很容易創建新分支,分支多了如何管理,時間久了,如何知道每個分支是干什么的?
C、哪些分支已經合并回了主干?
D、如何進行Release的管理?開始一個Release的時候如何凍結Feature, 如何在Prepare Release的時候,開發人員可以繼續開發新的功能?
E、生產線上代碼出現Bug,如何快速修復?而且修復的代碼要包含到開發人員的分支以及下一個Release?
大部分開發人員使用Git一般使用三個甚至兩個分支,一個是Master,一個是Develop,還有一個基于Develop的各種分支。在項目規模小的時候勉強可以支撐,但如果開發人員較多,而且項目周期過長就會出現各種問題。
在Git進行源碼管理實踐中,誕生了Git Flow,用于進行Git分支管理。

二、主流分支策略簡介

Git主流分支策略有三種:Git Flow、GitHub Flow、TBD。
Git Flow是應用最廣的Git分支管理實踐。
GitHub Flow主要應用于GitHub代碼托管工具中。
https://guides.github.com/introduction/flow/
Trunk based development
TBD(Trunk-based development),是單主干的分支實踐,在SVN 中比較流行。
https://trunkbaseddevelopment.com/alternative-branching-models/
每個開發團隊都應該根據團隊自身和項目的特點來選擇最適合的分支實踐。首先是項目的版本發布周期。如果發布周期較長,則Git-Flow是最好的選擇。Git-Flow可以很好地解決新功能開發、版本發布、生產系統維護等問題;如果發布周期較短,則TBD和GitHub Flow都是不錯的選擇。GitHub Flow的特色在于集成了Pull Request和代碼審查。如果項目已經使用GitHub,則GitHub Flow是最佳的選擇。GitHub Flow和TBD對持續集成和自動化測試等基礎設施有比較高的要求。

三、Git Flow簡介

Git Flow是構建在Git上的一個組織軟件開發活動的源碼管理的模型,是一套使用Git進行源代碼管理時的行為規范和簡化部分Git操作的工具,是在Git上構建的一項源碼管理最佳實踐。
Git Flow通過利用Git創建和管理分支的能力,為每個分支設定具有特定的含義名稱,并將軟件生命周期中的各類活動歸并到不同的分支上,實現了軟件開發過程不同操作的相互隔離。
軟件開發模型常見的有瀑布模型、迭×××發模型、敏捷開發模型等不同的模型,每種模型有各自應用場景。Git Flow重點解決的是由于源代碼在開發過程中的各種沖突導致開發活動混亂的問題。因此,Git flow可以很好的與各種現有開發模型結合使用。
Git Flow分支模型資料如下:
https://nvie.com/posts/a-successful-git-branching-model/

四、Git Flow模型簡介

1、Git Flow模型簡介

Git工程開發實踐(四)——Git分支管理策略
Git Flow模型中定義了主分支和輔助分支兩類分支,其中主分支用于組織與軟件開發、部署相關的活動;輔助分支組織用于解決特定的問題而進行的各種開發活動。

2、主分支

主分支是所有開發活動的核心分支。所有的開發活動產生的輸出物最終都會反映到主分支的代碼中。主分支分為master分支和develop分支。
Git工程開發實踐(四)——Git分支管理策略
A、master分支
通常,master分支只能從其它分支合并,不能在master分支直接修改。master分支上存放的是隨時可供在生產環境中部署的代碼(Production Ready state)。當開發活動到一定階段,產生一份新的可供部署的代碼時,master分支上的代碼會被更新。同時,每一次更新,最好添加對應的版本號標簽(TAG)。
所有在Master分支上的Commit應該打Tag。
B、develop分支
a、develop分支是保持當前開發最新成果的分支,一般會在此分支上進行晚間構建(Nightly Build)并執行自動化測試。
b、develop分支產生于master分支, 并長期存在。
c、當一個版本功能開發完畢且通過測試功能穩定時,就會合并到master分支上,并打好帶有相應版本號的tag。
d、develop分支一般命名為develop
develop分支是主開發分支,包含所有要發布到下一個Release的代碼,主要合并其它分支,比如Feature分支。

3、輔助分支

輔助分支是用于組織解決特定問題的各種軟件開發活動的分支。輔助分支主要用于組織軟件新功能的并行開發、簡化新功能開發代碼的跟蹤、輔助完成版本發布工作以及對生產代碼的缺陷進行緊急修復工作。輔助分支通常只會在有限的時間范圍內存在。
輔助分支包括用于開發新功能時所使用的feature分支,用于輔助版本發布的release分支,用于修正生產代碼中的缺陷的hotfix分支。
輔助分支都有固定的使用目的和分支操作限制。通過對分支的命名,定義了使用輔助分支的方法。
A、feature分支
feature分支使用規范:
a、可以從develop分支發起feature分支。
b、代碼必須合并回develop分支。
c、feature分支的命名可以使用除master,develop,release-*hotfix-*之外的任何名稱。
feature分支(topic分支)通常在開發一項新的軟件功能的時候使用,分支上的代碼變更最終合并回develop分支或者干脆被拋棄掉(例如實驗性且效果不好的代碼變更)。
一般而言,feature分支代碼可以保存在開發者自己的代碼庫中而不強制提交到主代碼庫里。
Feature分支開發完成后,必須合并回Develop分支,合并完分支后一般會刪Feature分支,但也可以保留。
Git工程開發實踐(四)——Git分支管理策略
B、release分支
release分支使用規范:
a、可以從develop分支派生;
b、必須合并回develop分支和master分支;
c、分支命名慣例:release-*
release分支是為發布新的產品版本而設計的。在release分支上的代碼允許做測試、bug修改、準備發布版本所需的各項說明信息(版本號、發布時間、編譯時間等)。通過在release分支上進行發布相關工作可以讓develop分支空閑出來以接受新的feature分支上的代碼提交,進入新的軟件開發迭代周期。
當develop分支上的代碼已經包含了所有即將發布的版本中所計劃包含的軟件功能,并且已通過所有測試時,可以考慮準備創建release分支。而所有在當前即將發布的版本外的業務需求一定要確保不能混到release分支內(避免由此引入一些不可控的系統缺陷)。
成功的派生release分支并被賦予版本號后,develop分支就可以為下一個版本服務。版本號的命名可以依據項目定義的版本號命名規則進行。
發布Release分支時,合并Release到Master和Develop, 同時在Master分支上打個Tag記住Release版本號,然后就可以刪除Release分支。
Git工程開發實踐(四)——Git分支管理策略
C、hotfix分支
hotfix分支使用規范:
a、可以從master分支派生;
b、必須合并回master分支和develop分支;
c、分支命名慣例:hotfix-*
hotfix分支是計劃外創建的,可以產生一個新的可供在生產環境部署的軟件版本。
當生產環境中的軟件遇到異常情況或者發現了嚴重到必須立即修復的軟件缺陷時,就需要從master分支上指定的TAG版本派生hotfix分支來組織代碼的緊急修復工作。優點是不會打斷正在進行的develop分支的開發工作,能夠讓團隊中負責新功能開發的人與負責代碼緊急修復的人并行的開展工作。
hotfix分支基于Master分支創建,開發完后需要合并回Master和Develop分支,同時在Master上打一個tag。
Git工程開發實踐(四)——Git分支管理策略

五、Git Flow工程實踐的意義

Git Flow開發模型從源代碼管理角度對通常意義上的軟件開發活動進行了約束,為軟件開發提供了一個可供參考的管理模型。Git Flow開發模型讓代碼倉庫保持整潔,讓小組各個成員之間的開發相互隔離,能夠有效避免處于開發狀態中的代碼相互影響而導致的效率低下和混亂。
為了簡化使用Git Flow模型時Git指令的復雜性,nvie開發出了一套git增強指令集,可以運行于Windows、Linux、Unix和Mac操作系統下。
https://github.com/nvie/gitflow
Git Flow工具是一套工具命令集,是對Git命令的封裝,其命令如下:

git flow init 
git flow feature start xxx 
git flow feature finish xxx 
git flow release start 0.1.xx 
git flow release finish 0.1.xx 
git flow hotfix start xxx 
git flow hotfix finish xxx

使用Git Flow工具只需要兩個命令即可完成Git Flow分支管理。如果使用Git命令,對開發者來說足夠繁瑣。

六、Git Flow分支管理應用示例

1、創建develop分支

git branch develop
git push -u origin develop

2、開始新Feature開發

git checkout -b some-feature develop
# Optionally, push branch to origin:
git push -u origin some-feature       
git status
git add some-file
git commit 

3、完成Feature

git pull origin develop
git checkout develop
git merge --no-ff some-feature
git push origin develop
git branch -d some-feature
git push origin --delete some-feature

4、開始Release

git checkout -b release-0.1.0 develop
# Optional: Bump version number, commit
# Prepare release, commit  

5、完成Release

git checkout master
git merge --no-ff release-0.1.0
git push
git checkout develop
git merge --no-ff release-0.1.0
git push
git branch -d release-0.1.0
# If you pushed branch to origin:
git push origin --delete release-0.1.0   
git tag -a v0.1.0 master
git push --tags

6、開始Hotfix

git checkout -b hotfix-0.1.1 master

7、完成Hotfix

git checkout master
git merge --no-ff hotfix-0.1.1
git push
git checkout develop
git merge --no-ff hotfix-0.1.1
git push
git branch -d hotfix-0.1.1
git tag -a v0.1.1 master
git push --tags
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仁布县| 阜新市| 乐至县| 科技| 靖边县| 来宾市| 蓝山县| 湖口县| 鲜城| 梁山县| 夏河县| 宣城市| 阿克苏市| 普兰店市| 浦北县| 嵩明县| 镇康县| 三原县| 华宁县| 达孜县| 仁寿县| 南涧| 二连浩特市| 淮阳县| 嘉祥县| 哈密市| 哈巴河县| 右玉县| 葵青区| 巴东县| 慈溪市| 六枝特区| 巩义市| 林西县| 常德市| 阳城县| 内乡县| 江安县| 石柱| 开鲁县| 都江堰市|