????歡迎來到我的CSDN主頁!????
??我是Java方文山,一個在CSDN分享筆記的博主。????
??推薦給大家我的專欄《Git》。????
??點擊這里,就可以查看我的主頁啦!????
Java方文山的個人主頁
??如果感覺還不錯的話請給我點贊吧!????
??期待你的加入,一起學習,一起進步!????
一、分支與標簽在開發(fā)過程中的實際場景
1.1.什么是分支與標簽
-
分支(Branches):
- 功能開發(fā):當團隊成員需要開發(fā)新的功能時,可以創(chuàng)建一個新的功能分支。這個分支可以獨立于主開發(fā)線,不影響其他開發(fā)工作,同時允許團隊成員在不干擾主要開發(fā)線的情況下進行工作。
- Bug 修復:如果在主開發(fā)線上發(fā)現(xiàn)了 Bug,團隊可以創(chuàng)建一個專門的修復分支來解決問題,而不必等待當前正在進行的開發(fā)完成。
- 版本發(fā)布:在準備發(fā)布新版本時,可以為發(fā)布創(chuàng)建一個專門的分支。這樣團隊可以繼續(xù)在主開發(fā)線上進行新功能的開發(fā),同時在發(fā)布分支上進行最后的穩(wěn)定性測試和 bug 修復。
-
標簽(Tags):
- 版本發(fā)布:當軟件達到一個里程碑式的版本,比如一個重要的發(fā)布版本或者里程碑版本,團隊可以為該版本創(chuàng)建一個標簽。這個標簽可以被用來標識對應版本的代碼狀態(tài),方便日后回溯和管理。
- 重要事件:有些團隊會在代碼中打標簽以標識重要事件,比如重大功能上線、重要的架構調整等,以便日后追蹤了解項目發(fā)展的歷程。
1.2.開發(fā)環(huán)境分層
-
開發(fā)(Development):
- 代表著程序員或開發(fā)團隊編寫、調試和測試新功能或修改現(xiàn)有功能的階段。
- 在開發(fā)環(huán)境中,開發(fā)人員可以自由地進行代碼編輯、構建和調試,以實現(xiàn)新功能或解決現(xiàn)有問題。
- 這個階段通常是代碼變動最頻繁、靈活度要求最高的階段。
-
測試(Testing):
- 代表著對開發(fā)完成的功能、模塊或整體系統(tǒng)進行各種測試,包括單元測試、集成測試、驗收測試等。
- 在測試環(huán)境中,測試人員或自動化測試工具會對軟件進行嚴格的測試以確保其功能的正確性、性能的穩(wěn)定性等。
- 這個階段的重點是驗證軟件的質量,發(fā)現(xiàn)并修復潛在的缺陷。
-
演示(Staging):
- 代表著將已經(jīng)通過開發(fā)和測試的功能部署到一個類似生產(chǎn)環(huán)境的環(huán)境中進行最終的集成測試和驗證。
- 在演示環(huán)境中,通常會模擬真實的生產(chǎn)環(huán)境配置,包括數(shù)據(jù)庫、緩存、消息隊列等,以確保軟件能夠正常運行并與其他系統(tǒng)協(xié)作。
- 這個階段的目標是確保部署到生產(chǎn)環(huán)境之前的系統(tǒng)穩(wěn)定性和一致性。
-
生產(chǎn)(Production):
- 代表著最終用戶會接觸到的實際運行環(huán)境,軟件在這里提供服務并處理真實的數(shù)據(jù)和用戶請求。
- 在生產(chǎn)環(huán)境中,軟件需要保持高可用性、高性能和安全性,并且通常需要與監(jiān)控系統(tǒng)結合以及隨時準備應對故障。
- 這個階段的關注點是確保系統(tǒng)可靠地為最終用戶提供服務,并及時響應和處理各種異常情況。
1.3.分支與標簽的關系
- "dev"階段對應"alpha"狀態(tài),表示正在開發(fā)階段的軟件版本。
- "test"階段對應"beta"狀態(tài),表示正在測試階段的軟件版本。
- "pre"階段對應"rc"狀態(tài),表示預發(fā)布或者灰度測試階段的軟件版本。
- "pro"階段對應"r"狀態(tài),表示正式發(fā)布或者生產(chǎn)環(huán)境中的軟件版本。
在標簽后綴中標明狀態(tài)有以下幾個好處
清晰的版本狀態(tài)識別:通過在標簽后綴中標明狀態(tài),可以清晰地識別出當前版本處于哪個階段,包括開發(fā)、測試、預發(fā)布和生產(chǎn)等狀態(tài)。這有助于團隊成員和其他相關人員快速理解當前版本所處的位置,以及該版本適合在何種環(huán)境中使用。
方便的版本管理:帶有狀態(tài)后綴的標簽能夠方便地進行版本管理。開發(fā)團隊可以根據(jù)不同狀態(tài)的標簽快速定位到相應階段的版本,并且能夠在不同環(huán)境中進行相應版本的部署和測試,從而提高版本管理的效率。
統(tǒng)一的命名規(guī)范:通過在標簽后綴中標明狀態(tài),可以建立統(tǒng)一的命名規(guī)范,使得團隊內部對于各個階段版本的命名統(tǒng)一,降低了溝通成本和誤解的可能性。
便于追溯歷史記錄:在項目歷史記錄中,帶有狀態(tài)后綴的標簽可以幫助開發(fā)人員更容易地追溯到不同階段的版本。這對于查找特定階段的代碼狀態(tài)或者回溯歷史版本是非常有幫助的。
支持并行開發(fā)和發(fā)布:通過標簽后綴標明狀態(tài),不同狀態(tài)的版本可以并行存在,并且能夠清晰地區(qū)分開來。這有助于支持團隊在不同階段進行并行開發(fā)和發(fā)布,提高了團隊的靈活性和效率。
二、Git分支的講解
2.1.GitBashHere操作分支
查看分支
git branch //查看本地分支
git branch -a //查看遠程分支
可以看到我們除了默認的master并無其他分支
創(chuàng)建分支git branch name ? ? ?//僅僅保存本地,遠程還需要push
?Git分支的命名規(guī)范dev/test/pre/pro(即master)
切換分支git checkout name
創(chuàng)建+切換分支git checkout -b name
合并某分支到當前分支?git merge name
我先在dev提交五個文件后再到test合并
分支提交遠程git push origin name
刪除分支(先刪除本地才能刪除遠程,刪除本地需要先切其他分支)
git branch -d name //刪除本地分支
git push origin --delete dev //刪除遠程分支
2.2.IDEA中操作分支
右鍵git工程,進入git,選擇Branches
選擇要切換的分支?
當前的分支是master,我新建一個dev2并切換
選中要切換的分支,checkout確定
當前所處的就是dev2分支了
但是 “Remote Branches” 下依然只有一個 master 分支,表明在我們的遠程倉庫依然只有一個master 分支,因此我們還需要把在本地倉庫新建的分支推送到遠程倉庫中,這樣就可以在遠程倉庫中看到新建的分支了。
單擊dev2 ,然后在左邊單擊 “Push” ,彈出推送對話框。單擊 “Push” 推送到遠程倉庫,這樣分支新建操作徹底完成,可以看到在"Remote Branches"分支下面出現(xiàn)了“dev2 ”,我們可以在該分支進行編碼并進行拉取和推送操作。
如果刪除分支之前,建議先切換到(Checkout)其他分支,例如,Checkout到master分支,當然這并不強制,只是為了方便刪除分支而已
三、Git標簽的講解
3.1.GitBashHere操作標簽
發(fā)布一個版本時,我們通常先在版本庫中打一個標簽(tag),這樣,就唯一確定了打標簽時刻的版本。將來無論什么時候,取某個標簽的版本,就是把那個打標簽的時刻的歷史版本取出來。所以,標簽也是版本庫的一個快照。
查看所有標簽git tag
標簽不是按時間順序列出,而是按字母排序的??梢杂胓it show <tagname>查看標簽信息
創(chuàng)建tag
首先,切換到需要打標簽的分支上,例如:test,再創(chuàng)建標簽
Tag格式: 主版本號.次版本號.修訂號-類型標簽,其中類型標簽可為:alpha、beta、rc、r。
Tag示例:1.0.0-alpha、1.0.0-beta、1.0.0-rc、1.0.0-r
推送標簽到遠程git push origin
刪除tag
如果標簽已經(jīng)推送到遠程,要刪除遠程標簽就麻煩一點,先從本地刪除
git tag -d 1.0.0-alpha
然后,再從遠程刪除。刪除命令也是push,但是格式如下:
git push origin :refs/tags/1.0.0-alpha
3.2.?IDEA中操作標簽
idea創(chuàng)建tag
可以右鍵項目,然后按照 Git -> Repository -> Tag... 創(chuàng)建tag。
或 頂部菜單欄 按照 VCS -> Git-> Tag... 創(chuàng)建tag。
推送遠程分支
push的時候特別注意打勾即可
查看某個tag版本只需要切換版本即可
這時候IDEA就會切換代碼了
對之前的代碼提交版本打tag
四、拓展--實戰(zhàn)分支與標簽
以下是用代碼來演示整個過程(還需大家仔細區(qū)分)
? ?1.克隆遠程庫test1
? ? ?git clone git@github.com:yanppp999/test1.git
? ?2.依次創(chuàng)建dev/qas/pre分支(pro即master,已存在不用再創(chuàng)建),然后切換到dev分支
? ? ?git branch dev
? ? ?git branch test
? ? ?git branch pre?
? ?#add(int a, int b){a+b+b} ? v1.0.0?
? ?#add(int a, int b, int c) ? v1.1.0
? ?#add(int... arr) ? ? ? ? ? ?v1.2.0
? ?3.創(chuàng)建并編輯Cal.java類,添加一個add(int a,int b)方法,三步曲:add->commit->push(*****)
? ? ?git add Cal.java
? ? ?git commit -m '項目一期完成'
? ? ?git push origin dev
? ? ?注1:在有分支情況下,push命令需要添加遠程倉庫名和分支名這兩個參數(shù)
? ? ? ? ? git push origin dev?
? ? ?注2:doc窗口切換到master,輸入ls命令,Cal.java是找不到的,同理在github網(wǎng)站上,也要選擇dev分支才能看到Cal.java文件?
? ? ? ? ? git branch master
? ? ? ? ? ls
? ? ?至此,項目一期工作完成,接下來進行測試階段(會在dev-test兩個分支間不斷切換)
? ? ?
? ? ?## 標簽相關內容,在分支講完之后,再重新添加進來
? ? ?## 下面命令此步驟先跳過?
? ? ?## 創(chuàng)建并推送標簽“dev-1.0.0”至遠程
? ? ?git checkout dev
? ? ?git tag 1.0.0-alpha
? ? ?git push origin 1.0.0-alpha
? ?
? ?4.將dev合并到test,并提交
? ? ?git checkout test
? ? ?git merge dev
? ? ?git push origin qas
? ?5.測試結束之后,創(chuàng)建標簽:qas-1.0.0
? ? ?git tag qas-1.0.0
? ? ?
? ?6.將qas合并到pre
? ? ?git checkout pre
? ? ?git merge qas
? ? ?git tag pre-1.0.0
? ?7.將pre合并到master
? ? ?git checkout master
? ? ?git merge pre
? ? ?git tag prd-1.0.0?
? ?注1:實際生產(chǎn)中的APP或軟件軟件版本命名規(guī)范詳解,詳情可參考:資料/12,資料/13
? ? ? ? v1.0.0.191202_be.d
? ? ? ? v1.0.0.191210.t?
? ? ? ? v1.0.0.191221.rc?
? ? ? ? v1.0.0.191225.r
? ? ? ??
8. git clone指定branch或tag
? ?1.取完整
? ? ?git clone https://github.com/arvidn/libtorrent.git
? ?2.使用指定branch
? ? ?git checkout origin/dev
? ?3.使用指定tag?
? ? ?git checkout 1.0.0-alpha ??
? 4.也可以在clone的時間指定tag或branch:
? ? git clone -b RC_1_1 https://github.com/arvidn/libtorrent.git?
? ? git clone -b libtorrent-1_1_9 https://github.com/arvidn/libtorrent.git
?
到這里我的分享就結束了,歡迎到評論區(qū)探討交流!!
??如果覺得有用的話還請點個贊吧 ??文章來源:http://www.zghlxwxcb.cn/news/detail-751604.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-751604.html
到了這里,關于【Git】Git分支與標簽掌握這些技巧讓你成為合格的碼農的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!