日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git初学札记(五)————Branch分支管理

發(fā)布時間:2025/3/12 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git初学札记(五)————Branch分支管理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

正如之前的博客中提到的,Git區(qū)別于Svn的一個最明顯的功能就是分支管理功能。

那么什么是分支?分支又能為我們的開發(fā)帶來什么翻天覆地的變化呢?(為了使博客的內(nèi)容更具權(quán)威性和專業(yè)性,以下部分內(nèi)容摘自官方文檔《Git - 分支簡介》)。

什么是分支

分支,顧名思義,從主干分離的枝干。使用分支意味著你可以把你的工作從開發(fā)主線上分離開來,以免影響開發(fā)主線。

分支并不是Git特有的功能特性,但是相比于其他的版本控制系統(tǒng),Git處理分支的方式可謂是難以置信的輕量,創(chuàng)建新分支這一操作幾乎能在瞬間完成,并且在不同分支之間的切換操作也是一樣便捷。與許多其他版本控制系統(tǒng)不同,Git鼓勵在工作流程中頻繁地使用分支與合并(branch 和 merge)。

理解和精通這一特性,我們便會意識到Git是如此的強(qiáng)大而又獨(dú)特,并且從此真正改變我們的開發(fā)方式。

創(chuàng)建分支

創(chuàng)建分支的命令是git branch :

$ git branch testing

根據(jù)Git的工作原理(在此不做討論,可以參見《起步 - Git基礎(chǔ)》),上面這行命令會在當(dāng)前所在的提交對象上創(chuàng)建一個指針。


此時,兩個指向相同提交歷史的分支,而Git又是如何知道當(dāng)前在哪一個分支上呢?其實(shí),Git中還存在一個名為HEAD的特殊指針。在Git中,HEAD指向當(dāng)前所在的本地分支(將HEAD想象為當(dāng)前分支的別名)。$ git branch命令僅僅會創(chuàng)建一個新分支,并不會自動切換到新分支中去。


可以使用$ git log 命令查看各個分支當(dāng)前所指對象。

$ git log --oneline --decorate f30ab (HEAD, master, testing) add feature #32 - ability to add new 34ac2 fixed bug #1328 - stack overflow under certain conditions 98ca9 initial commit of my project

可以看到,當(dāng)前master和testing分支都指向校驗和以 f30ab 開頭的提交對象。

切換分支

更換到一個已經(jīng)存在的分支,需要使用$ git checkout 命令。

$ git checkout testing

可以再次進(jìn)行開發(fā),并提交:

$ vim test.rb $ git commit -a -m 'made a change'

執(zhí)行完提交后,HEAD分支就會隨著提交操作自動向前移動,如上圖所示,testing 分支向前移動了,但是master分支卻沒有,它仍然指向運(yùn)行 git checkout 時所指向的對象。

我們再次切換回 master 分支上:

$ git checkout master

checkout 時HEAD隨之移動,這條命令完成了兩件事:第一是將HEAD指向 master 分支,第二是將工作目錄恢復(fù)成master 分支所指向的快照內(nèi)容。也就是說,你現(xiàn)在做修改的話,項目將始于一個較舊的版本。本質(zhì)上來講,這就是忽略 testing 分支所做的修改,以便向另一個方向進(jìn)行開發(fā)。

此時,如果我們不進(jìn)行分支合并(merge操作),而是朝著另一個方向進(jìn)行了修改,那么我們就會出現(xiàn)如下圖所示的分支結(jié)構(gòu):


可以看到,項目的提交歷史已經(jīng)產(chǎn)生了分叉。因為剛才我們創(chuàng)建了一個新分支,并切換過去進(jìn)行了一些工作,隨后又切換回 master 分支進(jìn)行了另外一些工作,上述兩次改動針對的是不同的分支:你可以在不同分支間不斷地來回切換和工作,并在時機(jī)成熟時將他們合并起來。

項目分叉歷史

使用 $ git log命令查看分叉歷史。它會輸出你的提交歷史、各個分支的指向以及項目的分支分叉情況:

$ git log --oneline --decorate --graph --all * c2b9e (HEAD, master) made other changes | * 87ab2 (testing) made a change |/ * f30ab add feature #32 - ability to add new formats to the * 34ac2 fixed bug #1328 - stack overflow under certain conditions * 98ca9 initial commit of my project

Git的分支實(shí)質(zhì)上僅包含所指對象校驗和(長度為40的SHA-1 值字符串)的文件,所以它的創(chuàng)建和銷毀都異常高效。因為創(chuàng)建一個新分支就相當(dāng)于往一個文件中寫入1個換行符和40個字符,因此十分迅速。

綜上,就是Git的分支管理相關(guān)的概念和模型,如有疑問歡迎文末留言。

參考:

《Git - 分支簡介》


創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Git初学札记(五)————Branch分支管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。