1. 程式人生 > 其它 >GitLab實戰演示,一篇文帶你瞭解Git的分支管理策略

GitLab實戰演示,一篇文帶你瞭解Git的分支管理策略

上一篇講到Git的分支管理實操,線上合併和本地合併都進行了實操。畢竟:光說不練是假把式。而只練不整理,只能是傻把式了。分支管理到底如何進行管理呢?

先以GitLab上的一張經典的圖打頭,作為一個總體概覽,也方便理解分支的管理和走向:

** 場景預設**

現假設公司有名為Hogwarts_Online2的開發專案,其中包含了上線分支master,開發分支develop,測試分支release,和個人開發的特性分支````

** 特性分支與develop分支**

1.1)與遠端倉庫建立連線,在本地建立自己的分支,並拉取develop分支的檔案:

1.2)在當前分支中建立新的檔案gitflowDemo.txt

,輸入內容“study git”;然後add,`commit```


#修改分支vi gitflowDemo.txt#提交修改git add gitflowDemo.txtgit commit -m "add demo"

1.3) 通過git pull命令檢查遠端develop分支是否和當前分支有衝突:


$ git pull origin developFrom ssh://47.95.238.18:10022/root/hogwarts_online2 * branch            develop    -> FETCH_HEADAlready up to date.

注: __
push之前先拉去遠端程式碼,以防在開發過程中,遠端被別人更新過新版本程式碼。如有程式碼衝突,兩人協商衝突解決辦法。多人開發的時候,衝突是不可避免的。

1.4) git push將修改推至遠端特性分支origin gitflowDemo

1.5) 在GitLab上進行merge request,並在develop分支上進行merge

如果想要撤回這次merge可用git merge --abort````

create merge request:

選擇develop分支: __

沒有衝突,可直接merge: __

最終我們可以看到成功 merge進develop分支中:

我們還可以在graph中檢視分支的走向:

這樣,特性分支和develop分支的程式碼拉取與合併就完成了

另外,工作中develop分支可能是許可權比較開放的,允許push的,這時候我們就可以在本地直接修改merge然後push到遠端develop中

修改gitflowDemo.txt檔案為

study gitupdate

add,commit,`push```


git add gitflowDemo.txtgit commit -m "update gitflowDemo.txt"git push -u origin gitflowDemo

``切換到本地develop分支,pull最新程式碼,merge本地gitflowDemo分支程式碼,push進遠端develop分支


git checkout developgit pull origin developgit merge gitflowDemogit push -u origin develop

這個是在GitLab上檢查更新情況:

** release分支**

develop分支變動頻繁,master分支屬於上限版本,因此需要一個內測的分支版本,這個就是release分支了
具體的提交操作根據許可權範圍,和1中develop的操作一致。

** hotfixes**

有的時候出現的非常緊急的bug,需要立即修改上線,來不及在各個分支上進行merge測試了;這個就是就需要用hotfixes模式,建立一個bugfix分支,直接繞開其他分支,修改合併到master中。

注:這種未經測試就上線的情況很危險,本人就遇見過;之前駐場在華為裡工作的時候,組內一位開發同事修改了一兩行的程式碼,覺得不會有問題就直接跳過了我們測試,通過別人直接上線釋出了,當時我所在的組是GNSS組;結果直接導致一千多萬臺手機的定位功能有失效的風險,受到了很多投訴,影響很大;最終相關開發人員被緊急停止休假,我們測試組也十一加了七天班,為了這個小小的改動付出了不小的後果~

3.1) 建立bugfix分支,並修改檔案push到遠端分支:


git checkout mastergit checkout -b bug_02fix  
vi bugfix02.txtfix bug02  
git commit -a -m "bug_01 fix"git push -u origin bug_01fix  
git add bugfix02.txtgit commit -m "fix bug02"git push origin bug_02fix  

3.2) 這個時候檢查GitLab,會發現多了一條從master分支拉出來的修改bug02的分支:

3.3)最後由最終的master許可權擁有者來進行合併。

3.4)修改了bug直接上線master後,很有可能讓master分支的修改已經領先其他分支了;這個時候就需要將其他分支更新,對master分支進行合併;同時將bugfix分支刪除,儘量保證分支的整潔度。

** 補充**

4、補充

git log

git log --graph --all --decorate=shortgit grep "pattern"  $(git rev-list --all)git log f13297
rebase

變基,合併分支後可以將分支走向的基準線變更,在分支很多的時候,可以簡化分支的展示,合併分支走向使流程看起來簡潔一點

git checkout featuregit rebase master

與merge後的分支走向對比:


git checkout featuregit merge master#或者寫在一行git merge feature master

此外,rebase還可以對提交的歷史進行修改(不常用也不建議使用)

git rebase -i HEAD~2

注意 __ rebase的使用規則
1、不要在公用的分支上執行rebase
`2、主要的分支進行保護```

git diff

git diffgit diff HEAD~3git diff master develop

常見diff工具:

  • diff ——僅展示某一行的增加(+)或減少(-)

  • vimdiff ——比diff看起來要更直接

  • IDE ——強大的工具,展示清晰,使用方便

vimdiff bugfix01.txt bugfix02.txt

參考連結:

git的基本使用流程:

https://www.atlassian.com/git/tutorials/setting-up-a-repository

特性分支工作流:

https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-
workflow

gitlab工作流:

https://docs.gitlab.com/ee/workflow/gitlab_flow.html

多種工作流對比:

https://www.atlassian.com/git/tutorials/comparing-workflows

gitlab私服搭建:

https://docs.gitlab.com/omnibus/docker/

作 者

AUTHOR

月關,霍格沃茲測試學院優秀學員。一個在質量保障領域攀登探索的tester,致力於用技術改變身邊人對測試的認識。對Web,介面和APP 自動化均有所涉及。

往期推薦

《穿越時空的git》之建立版本庫和常用命令操作

福利 |
學會Jenkins自己部署測試環境,讓你工資high到飛

單元測試框架怎麼搭?新版的Junit5有哪些神奇之處?

基於Junit4,利用xUnit框架讓你的測試用例可維護性大幅提升

- 今日互動 -

歡迎文章下方留言並分享給其他測試小夥伴哦~

**
來霍格沃茲測試開發學社,學習更多軟體測試與測試開發的進階技術,知識點涵蓋web自動化測試 app自動化測試、介面自動化測試、測試框架、效能測試、安全測試、持續整合/持續交付/DevOps,測試左移、測試右移、精準測試、測試平臺開發、測試管理等內容,課程技術涵蓋bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相關技術,全面提升測試開發工程師的技術實力

點選獲取更多資訊