git分支進階

其實git除了版本控制,另外一個最突出的特點就是他的分支操作。簡直 絲滑~.git也是多人協作的必備武器。 通常我們正常情況下只需要master 和 develop分支就夠了。 這里我們先以這兩條分支作為基準,進行一系列的操作。

開發新功能流程

這個應該屬于develop分支的所有(Master分支只管穩定版). 第一步,應該創建develop分支。

git checkout -b develop

然后拷貝主分支上的內容

git rebase master

(  ̄3)(ε ̄ ), ok, 正常情況下,你的develop分支和master上的分支就一模一樣了。 但是有的童鞋會有疑問,特么你為什么不用merge呢?
我就不用~ 就不用~ 就不用~
(づ ̄ 3 ̄)づ , 其實使用merge和使用rebase的區別就是,(使用mege是終極合并分支,使用的是fast-forward的模式,造成兩個分支的同步,給你開發新功能造成不必要的麻煩,當然,你可以使用. git merge --no-ff master合并,就可以啦。而你如果使用這個方式的話,會造成你圖譜git出現不必要的復雜度。。。而使用rebase會改變的你分支的基底~ 這樣看起來舒服一點。。。)
不懂誒~ ~ ~ ::>_<::
沒事,上面括號里面知識參考的,你不看根本沒關系。 如果你感 性 趣的話,可以參考英文rebase講解 | | 中文rebase講解
所以這里我就不贅述了,繼續
這時候我們就要在develop分支上開發新分支了。
現在假設我們已經做了一些改動(可能已經過去兩天了).
這時候我們要把develop分支提交到遠端,但在提交之前需要再同步一下master分支(為什么? 你猜~ 你也可以不同步,反正下次拉下來再同步的時候難受的是你自己)。接著使用:

git fetch origin master
git rebase master

Ok~ 如果沒出什么conflict那么恭喜你,你已經學會了同步分支的流程。
另外,rebase還有一個iteractive模式,其實就是用來處理在你開發時別人提交的commit 和相關的-m參數. 這里我們不做要求,因為好麻煩, 笨寶寶不想說 (~﹃~)~zZ。
如果感興趣的同學可以參考: 傳送門
OK,最后當你develop分支開發完畢,這時候你需要切換到master分支上去合并。

git checkout master
git merge --no-ff develop

OK,如果沒有conflict恭喜,已經成功.
恩,說道這里,兩個分支的開發git已經基本完畢了。
(┬_┬),為什么兩個分支開發起來都這么復雜。
小朋友,你知道在一些團隊,他們用的是5個分支嗎?
主要分支: master,develop
輔助分支: hotfix,feature,release
這里我們來介紹一個git的語法糖~git flow

git flow的開發流程

這個應該是集各種糖之大成,然你免去創建分支,刪除分支,切換分支,打標簽等等各種煩惱,以及...自行google
這里我只講干貨誒。
先按慣例上張圖:

這個是gitflow的鼻祖做的講解圖。 看不懂吧,我一開始也看不懂,后面寫寫的就懂了。
我先按分支說一下他們各自的功能吧:

主要分支:

1. master: 穩定發布版(永遠隱藏)
2. develop: 持續更新版(永遠工作)

輔助分支:


1.feature: 同步develop開發新功能,完成后與develop合并(merge)
2. release: 當新功能版本開發完后,就可以使用release分支進行創建分支并且合并,修完bug之后,與develop和master分支進行合并
3. hotfix: 這個應該算是緊急情況吧,當線上出問題的時候,需要馬上進行修復,然后再提交。 完成后,會與develop和master分支進行合并.

ok , 基本上,說了各自分支的一些基本用處。 現在我們來正式介入git flow這個神奇的語法糖。
首先,我們要安裝git-flow這個命令集合。
在MAC上,我們直接可以使用:

brew install git-flow; //安裝

在windows上,可以使用:

wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

直接復制貼到命令行就可以了。
git flow init
首先創建你的git 分支群,即上面說的那幾個。 接下來,zsh || bash || cmd會彈出一個對話框.

像這樣,閉著眼睛,一直點[Enter]就可以了。
接下來你會發現,你初始化的時候就是處在develop分支上面的.
Ok~ 正常的話,我們就可以開始進行功能的開發了。
使用git flow feature start [branchName]命令,建立你的功能分支, 之后你便可以創建一些特定功能.(他省去了,你創建分支,并rebase分支這一過程,超棒.~^_^~ )

git flow feature start headerBar

之后他會提示你一些信息,告訴你現在正在feature/headerBar分支上,然后你就可以進行一些開發...
當然,功能開發是一項長久的任務,以后你也需要不斷的進行git rebase develop進行分支的更新,然后繼續開發。 要知道gitflow只是一個語法糖,原生的git命令你完全都可以用的。
所以,你還可以將新建的功能分支保存到遠端.

git flow feature publish feature/[branchName]
//或者使用原生的
git push origin feature/[branchName]

我傾向于用原生的...
完成開發之后一定要記著使用.git flow feature finish [branchName].
這里我們使用headerBar分支

git flow feature finish headerBar

Ok~ 它便會將你的分支與develop進行合并,然后并且刪除該feature分支。 如果你不犯傻兩邊都改動(develop和feature分支), 應該不會出現conflict的。
滿意~ #^_^#.
現在你的develop分支已經開發成熟了,想要發布一個測試版,這時候就可以使用git flow release start [tag]. 進行發布,記著打上標簽(版本號). 還有,要保證這個release是你當前最穩定的版本才行。

git flow release start v0.0.1

棒~ 現在,你已經創建了一個release的0.0.1版。然后,你可以在release分支上進行最后的修改。
現在,準備工作已經基本做完,現在我要正式發布啦~~
怕拉吧~ ( ⊙ _ ⊙ )一般吧
使用git flow release finish [tag]后面跟上你創建release的指定版本號,這里我們接著使用v0.0.1

git flow release finish v0.0.1

Ok~這時候,release分支會和develop,master分支進行合并,然后被刪除。 也就是,只有在release的時候,我們才能真正的接觸到master分支。 這也是git-flow最讓我感到震撼的, 完整的規范化,簡直了~ 我愛 上它了。
還記得我們打的標記嗎? 沒錯,他會保存在你的git倉庫里。你可以使用git tag進行檢查.
另外gitflow還有一個致命誘惑就是他的hotfix分支。簡直啦~~~ 超級棒。
當你的master已經上線,但是突然出現一個bug的話,你可以直接在master分支上改動,但是有個問題就是,master的分支超前了develop分支,造成你版本的混亂。 所以,這里我們可以直接使用git flow hotfix start [tagName], 其中tagName是新建的一個分支,表示完成bugfix的版本號。

git flow hotfix start v0.0.2

現在,我們已經創建了一個分支hotfix/0.0.2, 而且他貼心的幫我們rebase了master內容,然后我們完成之后就可以使用git flow hotfix finish [tagName]進行hotfix的收尾工作。

git flow hotfix finish v0.0.2

OK, 然后貼心的zsh會給你一些提示信息,說明已經和master,develop分支合并,完成了bug的修復。棒~
所以,現在大多數team的都已經使用git-flow進行git的布局和管理,我們可以和如翔一般的分支管理說拜拜啦~ 雖然說是5大分支,但其實,我們的主要存在的分支依然只有develop和master分支~ 最后我們在一起回顧一下,git-flow的工作流程:

1. 創建分支: git flow init
2. 進行功能分支的開發: git flow feature start [branchName]
3. 進行功能的合并: git flow feature finish [branchName]
4. 進行發布版的準備: git flow release start [tagName]
5. 完成發布版: git flow release finish [tagName]
6. 熱插拔修復bug: git flow hotfix start [tagName]
7. 完成hotfix: git flow hotfix finish [tagName]

OK~ 現在git-flow我們已經基本學會了。當然,git原本就好到無懈可擊,加上git-flow的優化,簡直,神一般的存在。 最后再搬一句我愛的idiom:

Blessing in disguise

前端路漫漫a ~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285740.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285740.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285740.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于c# .net爬蟲

剛開始聽到爬蟲這兩個字眼的時候感覺挺稀奇的&#xff0c;之前并沒有接觸過爬蟲&#xff0c;正好這會手上沒事&#xff0c;于是便百度了一下。 1.網絡爬蟲&#xff08;又被稱為網頁蜘蛛&#xff0c;網絡機器人&#xff0c;在FOAF社區中間&#xff0c;更經常的稱為網頁追逐者&am…

Google 的 Java 編碼規范,參考學習!

目錄 01 術語說明和指南說明 02 源文件基礎 2.1 文件名 2.2 文件編碼&#xff1a;UTF-8 2.3 特殊字符 03 源文件結構 3.1 許可證或版權信息 3.2 package語句 3.3 import語句 3.4 類聲明 04 格式 4.1 大括號 4.3 一行一個語句 4.4 列限制&#xff1a;80 或 100 4…

MySQL Schema與數據類型的優化

選擇優化的數據類型&#xff1a; 1、 更小的通常更好&#xff1a; 一般情況下&#xff0c;應該盡量使用可以正確存儲數據的最小數據類型。更小的數據類型通常更快&#xff0c;因為他們占用更少的磁盤&#xff0c;內存和cpu緩存&#xff0c;并且處理時需要的cpu周期也更少。 2、…

【Pix4d精品教程】Pix4d中央子午線細化設置(測區跨兩個分帶)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 航測內業中,在自由空三結束之后,需要導入像控點,進而去刺像控點。但是當測區跨兩個分帶的時候(如測區正好處在3度帶105和108中間),像控點可能距離靶標點很遠,給刺點帶來了很大難度。怎樣解…

Failed:(13: Permission denied)導致訪問瀏覽器出現Nginx 500 Internal Server Error

1 、問題 我在部署nginx反向代理服務器的時候&#xff0c;nginx.conf文件都配置好了&#xff0c;但是我在瀏覽器里面輸入域名的時候&#xff0c;提示Nginx 500 Internal Server Error 2、分析 我們需要找到nginx輸出錯誤日志的文件&#xff0c;在nginx.conf里面我們可以看到錯…

MAUI與Blazor共享一套UI,媲美Flutter,實現Windows、macOS、Android、iOS、Web通用UI

1. 前言距離上次發《MAUI初體驗&#xff1a;爽》一文已經過去2個月了&#xff0c;本計劃是下半年或者明年再研究MAUI的&#xff0c;現在計劃提前啦&#xff0c;因為我覺得MAUI Blazor挺有意思的&#xff1a;在Android、iOS、macOS、Windows之間共享UI&#xff0c;一處UI增加或者…

dns 報文格式

最近學習了下DNS的格式&#xff0c;發現很多內容都是轉載自同一個而且說的不是很清楚&#xff0c;特再整理下具體可以查看RFC1035 http://www.ietf.org/rfc/rfc1035.txt有詳細的解釋對于英語理解不是很好和懶得看這么長的可以看下本文首先是DNS數據幀的格式-------------------…

input file實現批量上傳

1、需求實現word批量上傳。 2、使用插件jquery-form.js 3、html代碼 注意 multiple"multiple" 1 <form id"frm_upload" method"post" enctype"multipart/form-data"> 2   <input type"file" id"filepath&qu…

【Pix4d精品教程】Pix4d修編正射影像DOM的兩種方法案例詳解

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) DOM修編前: DOM修編后: 文章摘要: Pix4d內業數據處理通常會生成點云、DSM和DOM等產品,DSM經過精編可以生成精準的DEM,而DOM一般情況下,存在比如房屋邊緣被拉花,或者存在噪點的情況

刪除Linux下/tmp目錄引起的不正常登錄系統

現象&#xff1a;/tmp占用400M的空間(里面全部是亂七八糟的東西) 動作&#xff1a;刪除/tmp目錄 后果&#xff1a;造成只能啟動到控制臺模式 應急&#xff1a; 1 創建目錄&#xff1a;#mkdir /tmp 結果系統在控制臺模式登錄和X windows模式登錄狀態間反復切換&#xff0c;不能進…

C語言試題八十五之狼追兔子問題

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 一只兔子躲…

[轉]快速使用FileProvider解決Android7.0文件權限問題

升級到Android7.0之后&#xff0c;啟動系統相機或者截圖&#xff0c;傳入URI的時候可能會導致程序閃退崩潰。這是因為7.0的新的文件權限導致的。下面是解決這個問題的快速解決方案。 問題代碼 在7.0可能會出問題的代碼&#xff1a; final String CACHE_IMG Environment.getExt…

終于找到了,開源的Vue3+.NET6通用管理后臺!

據說80%的.NET項目都是管理后臺&#xff0c;然而能用上Vue3.NET6的管理后臺并不多見。這里分享一套Vue3 Axios TS Vite ElementUI Plus .NET 6 WebAPI JWT SqlSugar的前后端分離架構的通用管理后臺源碼數據庫腳本&#xff0c;還有與之配套錄制的一組視頻教程&#xff0c;全部打…

【Pix4d精品教程】Pix4d模型成果導出OSGB并加載OSGB到EPS進行三維測圖完美案例教程

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 在垂直攝影中,Pix4d也可以生成漂亮的三維模型,并導出為OSGB,加載到EPS進行三維測圖。首先來看生成的三維格網紋理和EPS三維模型加載效果。 Pix4d生成的三維格網紋理: EPS加載OSGB模型效果: 文…

Vim 批量替換

假設在非Win系統下。 想批量替換文本不再是Ctrl&#xff0b;F那么簡單了&#xff0c; 一般用Vim來做批量替換&#xff0c; 略微復雜點&#xff1a; 比如將192.168.0.1替換為192.168.0.2 :%s/192.168.0.1/192.168.0.2/g

Android實現ListView(1)

昨天有個朋友問我Android ListView列表視圖&#xff0c;遇到了點錯誤&#xff0c;今天我給大家演示&#xff0c;具體實現見圖&#xff1a; 1&#xff1a;創建一個item布局layout/item.xml 2&#xff1a;創建一個ListViewActivity類&#xff0c;但是必須繼承ListActivity&#x…

WolframAlpha 的使用

WolframAlpha 1. 求解復雜方程組 ab?4abc2ac1直接點開網站&#xff0c;在輸入框中輸入&#xff0c;ab-4;abc2;ac1;&#xff08;逗號分割開來&#xff09;&#xff0c; 轉載于:https://www.cnblogs.com/mtcnn/p/9423087.html

C語言試題八十六之兔子生兔子問題

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 假設一對兔…

聊聊 C# 中的 Composite 模式

?寫在前面 Composite組合模式屬于設計模式中比較熱門的一個&#xff0c;相信大家對它一定不像對訪問者模式那么陌生&#xff0c;畢竟誰又沒有遇到過樹形結構呢。不過所謂溫故而知新&#xff0c;我們還是從一個例子出發&#xff0c;起底一下這個模式吧。一個簡單例子 設想我們…

140種Python標準庫、第三方庫和外部工具都有了

導讀&#xff1a;Python數據工具箱涵蓋從數據源到數據可視化的完整流程中涉及到的常用庫、函數和外部工具。其中既有Python內置函數和標準庫&#xff0c;又有第三方庫和工具。 這些庫可用于文件讀寫、網絡抓取和解析、數據連接、數清洗轉換、數據計算和統計分析、圖像和視頻處理…