日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 架構(gòu)師社區(qū)
[導(dǎo)讀]上一篇原創(chuàng)寫了圖解Git的第一篇,個人感覺還是可以,比較基礎(chǔ)的那種,有興趣的可以看一看。這一篇我們繼續(xù)圖解Git,上一篇基本就是基礎(chǔ),這一篇算是進(jìn)階。

上一篇原創(chuàng)寫了圖解Git的第一篇,個人感覺還是可以,比較基礎(chǔ)的那種,有興趣的可以看一看[],這一篇我們繼續(xù)圖解Git,上一篇基本就是基礎(chǔ),這一篇算是進(jìn)階。

分支管理

Git中比較最重要的一點就是分支的概念,有了分支就有了合并和衍合的操作,「合并」「衍合」能夠「有效的對代碼版本的管理」。

Git的初始化中有一條默認(rèn)的主分支叫做master,每一次的提交都會串成一條時間線,這就是一條分支,當(dāng)前分支由HEAD指針指向:

深入淺出圖解Git,入門到精通(二)

當(dāng)每次發(fā)生代碼提交的時候,當(dāng)前指向就會向前形成一個新的版本,假如再創(chuàng)建一個新的分支bran,并且當(dāng)前的提交指向新的分支,這樣新的分支隨著時間的推移就會形成許多版本:

深入淺出圖解Git,入門到精通(二)

當(dāng)新分支開發(fā)完后,提交倉庫,并合并到主干master,最后刪除bran分支,這樣就完成了一次個人的開發(fā):

深入淺出圖解Git,入門到精通(二)

所以,假如主分支上只建立一條分支的話,分支的合并是非常快速的,只需要移動master分支到當(dāng)前提交,然后將HEAD指針指向master,最后刪除bran分支就完成了。

但是,事實上并不是這樣的,在一個多人協(xié)作的開發(fā)團(tuán)隊中,往往每個人都會建立自己的分支,有自己的提交,最后合并到主干,當(dāng)自己提交的時候,遠(yuǎn)程倉庫代碼就會存在自己本地倉庫并未有的代碼,這樣就會導(dǎo)致push失敗。

例如:程序員Tom和Jerry同時遷出代碼,他們的初始代碼分支都如下圖所示:

深入淺出圖解Git,入門到精通(二)

當(dāng)Tom開發(fā)自己的業(yè)務(wù)模塊,提交代碼并且合并到主干后,遠(yuǎn)程主干分支如下圖所示:

深入淺出圖解Git,入門到精通(二)

「遠(yuǎn)程倉庫master已經(jīng)不再指向gs234,而是新生成了一個版本dfd453,作為當(dāng)前指向的版本」。

與此同時,Jerry的本地也同時開發(fā)完自己的模塊后,分支如下圖所示:

深入淺出圖解Git,入門到精通(二)

在Jerry的本地環(huán)境中,他的「本地倉庫master還是指向gs234」,Jerry在自己新建立的一個分支bran中進(jìn)行開發(fā),開發(fā)完后合并分支,最后master就會指向ed489。

當(dāng)Jerry再次提交代碼,Git就會檢查遠(yuǎn)程倉庫與Jerry的本地倉庫,進(jìn)行對比后,發(fā)現(xiàn)遠(yuǎn)程倉庫存在Jerry的本地倉庫不存在的代碼,就需要Jerry將遠(yuǎn)程倉庫執(zhí)行git pull后,自行解決沖突。

上面說了分支基本原理,已經(jīng)管理分支出現(xiàn)的問題,下面我們就來一步一步的深入操作分支的基本命令。

新建分支

Git新建一個分支的命令為:git branch <分支名字>,新建立后分之后,切換分支的命令為:git checkout <分支名字>

新建分支的實質(zhì):「就是新建立一個引用,指向當(dāng)前提交,master就好比一個引用」;切換分支的實質(zhì):就是將HEAD由指向原來的引用,重新指向要切換的分支的引用上:

深入淺出圖解Git,入門到精通(二)

當(dāng)然上面創(chuàng)建分支并且合并分支的兩條命令可以合并成一條命令:git checkout -b <分支名字>

當(dāng)切換分之后,每次commit提交代碼時HEAD指針就會跟隨著新的bran分支移動,形成bran分支上的每一個版本:

深入淺出圖解Git,入門到精通(二)

假如,在新的bran分支上開發(fā)到某一個版本,再次切換回master分支進(jìn)行開發(fā)就會形成分叉:

深入淺出圖解Git,入門到精通(二)

查看分支

當(dāng)分支創(chuàng)建好了,你可以通過:git branch,來查看自己本地的分支情況:

深入淺出圖解Git,入門到精通(二)分支前面帶有*號的表示當(dāng)前的分支,查看分之后,你就可以很清楚的知道自己要checkout哪條分支了。

合并分支

開發(fā)自己模塊后,后面就會在自己本地進(jìn)行合并分支,合并分支的命令:git merge <分支名字>,它表示「合并指定的分支到當(dāng)前分支」,比如:當(dāng)前分支為master,執(zhí)行:git merge bran,表示合并bran分支到當(dāng)前master分支上。

分支合并也會有失敗的情況,當(dāng)你的兩條分支都修改的相同的文件,這時候Git就無法判斷你要保留哪一個修改,就會出現(xiàn)merge沖突。

例如:我先在master分支修改README.md文件,然后提交本地倉庫:深入淺出圖解Git,入門到精通(二)然后切換回分支dev,再次修改README.md文件,再次提交

深入淺出圖解Git,入門到精通(二)

最后進(jìn)行合并分支,此時在你兩次修改的README.md文件中就會出現(xiàn)兩次修改的沖突代碼:

深入淺出圖解Git,入門到精通(二)

因為你兩次修改同一文件的操作,合并后Git并不知道你要保留哪一次的操作,所以它就會將這個決定交給你自己決定,它只告訴你文件中哪里的代碼沖突了,具體怎么改就由你自己去弄。

深入淺出圖解Git,入門到精通(二)

刪除分支

最后是刪除自己新建的分支,通過:git branch -d <分支名字>,進(jìn)行刪除分支,假如分支刪除不了,可以通過:git branch -D <分支名字>,強制刪除分支:

深入淺出圖解Git,入門到精通(二)Git中刪除分支的實質(zhì):dev只是一個分支的引用,所以刪除分支也就是刪除這個引用,并不會刪除任何conmit,所以刪除操作也是非常高效的。

假如一條分支commit的引用被刪除,那么這條分支的就沒有任何引用指向,這樣就會找不到這條分支,最后就會被Git回收機制回收。

查看遠(yuǎn)程

在多人協(xié)作的團(tuán)隊下,你可能要隨時查看遠(yuǎn)程倉庫的情況,可以通過:git remote,進(jìn)行查看,加上-v參數(shù)可以查看遠(yuǎn)程倉庫的詳細(xì)情況。

git?remote
git?remote?-v

推送分支

深入淺出圖解Git,入門到精通(二)

分支的推送到遠(yuǎn)程上一節(jié)已經(jīng)提過,使用git push命令就可以進(jìn)行分支的推送,命令后面加上分支的命令,表示具體推送哪條分支:

git?push?origin?master?//?將本地master分支推送到遠(yuǎn)程庫

拉取分支

分支的拉取使用git pull命令,這條命令相當(dāng)于以下兩條命令:

git?fetch
git?merge

但是一般實際工作中,都可能會直接使用git pull命令:

深入淺出圖解Git,入門到精通(二)

分支管理策略

在合并分支的時候,Git會以快速合并的模式進(jìn)行合并(Fast forward),但是這種模式刪除分支后,會丟失分支的信息。

Git中還可以以「普通模式」進(jìn)行合并,在原來git merge命令后面加上--no-ff參數(shù)即可,合并的命令如下:

$?git?merge?--no-ff?-m?"message"?dev

臨時存取工作區(qū)的改動

在開發(fā)中,若是某一時刻你想把當(dāng)前的改動臨時進(jìn)行存放起來,可以使用git stash命令,它表示將改動的文件存儲到一個獨立的存儲區(qū)域,并不會被提交,當(dāng)再次需要的時候可以隨時取出來。

這里要注意的是:「git stash的是改動的文件,也就是被Git追蹤的文件,新添加的文件并沒有被Git追蹤,所以git stash并不會stash」。

深入淺出圖解Git,入門到精通(二)

git stash命令也可以加上save命令后面再加上備注信息,方便查看:

git?stash?save?"備注信息"

git stash成功后「本地的工作目錄的代碼會和本地倉庫一樣」,git stash后可以通過git stash list命令查看之前stash的歷史記錄,當(dāng)再次需要將改動的文件取出來時候,可以通過以下命令:

git?stash?pop

git stash pop表示「彈出第一個被stash的記錄,并且該stash會從歷史記錄中刪除」;也可以使用git stash apply命令「彈出stash,但是這條命令stash仍然會保存在stash歷史記錄中」,你也可以通過:git stash drop命令來刪除。

深入淺出圖解Git,入門到精通(二)

這一篇就只講解了Git的分支原理以及Git的臨時存取操作,限于篇幅,我們今天就到這里,我們下一期繼續(xù)圖解Git操作,我們下一期再見。

特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

深入淺出圖解Git,入門到精通(二)

深入淺出圖解Git,入門到精通(二)

深入淺出圖解Git,入門到精通(二)

長按訂閱更多精彩▼

深入淺出圖解Git,入門到精通(二)

如有收獲,點個在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉