03—分支內(nèi)幕原理

1、分支的基礎(chǔ)知識(shí)

1-1闭树、分支的介紹

分支其實(shí)就是指針耸棒,執(zhí)行commit對(duì)象

1-2、創(chuàng)建一個(gè)分支

git branch testing 报辱,可以創(chuàng)建一個(gè)新的分支与殃,此時(shí)這個(gè)分支的指針會(huì)指向當(dāng)前你所在的分支所指向的commit object 上。

如何查看各個(gè)分支指向哪個(gè)commit object 呢碍现?使用 git log --oneline --decorate 命令即可幅疼,會(huì)給你顯示出來(lái)

1-3、切換分支

git checkout testing昼接,此時(shí)就可以切換到 testing 分支爽篷,此時(shí) HEAD 指針會(huì)指向 testing 分支。

git checkout -b testing 慢睡,這是一個(gè)組合命令逐工,創(chuàng)建分支的時(shí)候就切切換到該分支了。

此時(shí)如果在 testing 分支上提交代碼漂辐,那么 commit 樹(shù)就會(huì)長(zhǎng)出一個(gè)新的 commit object 泪喊,而 testing 分支指針會(huì)指向最新的 commit object ,HEAD繼續(xù)指向 testing 分支指針髓涯,而master 指針還是指向之前的那個(gè) commit object袒啼。

git checkout master ,會(huì)切回到 master 分支,此時(shí) HEAD 指針會(huì)指向 master 指針瘤泪,同時(shí)將 master 指針指向的那個(gè) commit object 灶泵,對(duì)應(yīng)的 tree 和 其中的 blob育八,也就是對(duì)應(yīng)文件快照恢復(fù)到工作區(qū)中对途。

2、遠(yuǎn)程分支

在你本地你可以創(chuàng)建一個(gè)分支髓棋,然后開(kāi)發(fā)代碼实檀,但是后續(xù)的話,你肯定是要將本地分支推送到遠(yuǎn)程倉(cāng)庫(kù)里面去的按声。

git push -u origin 分支名稱

這個(gè)命令執(zhí)行膳犹,表示將當(dāng)前所在的分支同后面遠(yuǎn)程的分支名稱關(guān)聯(lián)起來(lái),這樣后面執(zhí)行 git push 或者 git pull的時(shí)候签则,就直接代表拉取或者推送到相應(yīng)的遠(yuǎn)程分支上面去了须床,一般這個(gè)分支名稱就是寫當(dāng)前所在的分支名稱。

如果其他人要將某個(gè)遠(yuǎn)程倉(cāng)庫(kù)的分支拉取下來(lái)渐裂,應(yīng)該執(zhí)行一個(gè)命令豺旬,叫做git fetch origin,就會(huì)抓取下來(lái)遠(yuǎn)程倉(cāng)庫(kù)新增了哪些分支柒凉。

接下來(lái)可以執(zhí)行一個(gè)命令 git checkout -b 本地分支 origin/遠(yuǎn)程分支族阅,然后這個(gè)命令一執(zhí)行,就是在本地創(chuàng)建了一個(gè)遠(yuǎn)程分支對(duì)應(yīng)的本地分支膝捞,互相關(guān)聯(lián)起來(lái)坦刀。以后呢,每次如果別人更新了那個(gè)分支的代碼蔬咬,push 到了遠(yuǎn)程倉(cāng)庫(kù)鲤遥,你可以執(zhí)行 git pull 命令,將這個(gè)分支在遠(yuǎn)程倉(cāng)庫(kù)的代碼拉取下來(lái)林艘,跟本地分支的代碼進(jìn)行合并盖奈。

舉個(gè)栗子:假設(shè)我們公司 git 服務(wù)器地址是 git.leslie.com ,然后我們?nèi)绻胓it clone命令,從這個(gè)服務(wù)器克隆一個(gè)版本庫(kù)下來(lái)北启,git默認(rèn)會(huì)將遠(yuǎn)程版本庫(kù)名為 origin卜朗,同時(shí)在本地創(chuàng)建一個(gè)指向遠(yuǎn)程版本庫(kù)的 master 分支的本地分支,叫做 origin/master咕村。此外场钉,git也會(huì)在本地創(chuàng)建一個(gè) master 分支,內(nèi)容就是跟 origin/master 分支一樣的懈涛。從git 服務(wù)器克隆版本庫(kù)下來(lái)的時(shí)候逛万,遠(yuǎn)程版本庫(kù)的commit 樹(shù)會(huì)一同拷貝下來(lái),然后 origin/master 指向的 commit,就是遠(yuǎn)程版本庫(kù)的master指向的commit宇植,同時(shí)給本地創(chuàng)建的 master 也是指向這個(gè)commit得封。

此時(shí),如果你在本地做了不少開(kāi)發(fā)指郁,然后本地 master 移動(dòng)了好幾個(gè) commit 忙上,同時(shí) origin/master 還是指向最開(kāi)始的那個(gè) commit,而同時(shí)闲坎,遠(yuǎn)程版本庫(kù)上疫粥,其他同事也提交了幾次代碼,因此遠(yuǎn)程版本庫(kù)上的 commit 也移動(dòng)了幾個(gè) commit腰懂,此時(shí)如果要讓本地和遠(yuǎn)程保持同步梗逮,需要使用 git fetch origin 命令,該命令會(huì)將遠(yuǎn)程版本庫(kù)的 commit 樹(shù)和所有的分支都拉取下來(lái)绣溜,跟本地的 commit 樹(shù)進(jìn)行合并慷彤,此時(shí)可能就會(huì)在本地形成一顆有兩個(gè)分叉的 commit樹(shù),本地 origin/master 會(huì)指向遠(yuǎn)程版本庫(kù)的master 指向的那個(gè) commit 怖喻,本地的master 繼續(xù)指向之前本地最新的那個(gè) commit底哗。

3、分支命令管理

git branch 直接執(zhí)行罢防,會(huì)顯示出當(dāng)前所有分支列表艘虎,以及你在哪個(gè)分支上工作
git branch -v 可以顯示出每個(gè)分支當(dāng)前所指向的commit object
git branch -vv 在 -v 的基礎(chǔ)上可以顯示本地分支跟蹤的遠(yuǎn)程分支
git branch --merged 可以看到哪些分支被merge 進(jìn)了當(dāng)前分支
git branch --no-merged 可以看到哪些分支還沒(méi)有merger 進(jìn)當(dāng)前分支
git branch -d 分支名 刪除一個(gè)分支,可能會(huì)提示你被刪除的分支還沒(méi)有被merge到當(dāng)前分支咒吐,<br />不讓你刪除該分支野建,此時(shí)可以使用git branch -D 分支名,強(qiáng)制刪除一個(gè)分支
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恬叹,一起剝皮案震驚了整個(gè)濱河市候生,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绽昼,老刑警劉巖唯鸭,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異硅确,居然都是意外死亡目溉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門菱农,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缭付,“玉大人,你說(shuō)我怎么就攤上這事循未∠菝ǎ” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绣檬。 經(jīng)常有香客問(wèn)我足陨,道長(zhǎng),這世上最難降的妖魔是什么娇未? 我笑而不...
    開(kāi)封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任墨缘,我火速辦了婚禮,結(jié)果婚禮上忘蟹,老公的妹妹穿的比我還像新娘飒房。我一直安慰自己,他們只是感情好媚值,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著护糖,像睡著了一般褥芒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嫡良,一...
    開(kāi)封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天锰扶,我揣著相機(jī)與錄音,去河邊找鬼寝受。 笑死坷牛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的很澄。 我是一名探鬼主播京闰,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼甩苛!你這毒婦竟也來(lái)了蹂楣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讯蒲,失蹤者是張志新(化名)和其女友劉穎痊土,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體墨林,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赁酝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旭等。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酌呆。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辆雾,靈堂內(nèi)的尸體忽然破棺而出肪笋,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布藤乙,位于F島的核電站猜揪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坛梁。R本人自食惡果不足惜而姐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望划咐。 院中可真熱鬧拴念,春花似錦、人聲如沸褐缠。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)队魏。三九已至公般,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胡桨,已是汗流浹背官帘。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昧谊,地道東北人刽虹。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像呢诬,于是被迫代替她去往敵國(guó)和親涌哲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照馅巷,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)膛虫。這樣一來(lái),任何一處協(xié)同...
    __silhouette閱讀 15,887評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照钓猬,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)...
    sunnyghx閱讀 3,921評(píng)論 0 11
  • 人真的很奇怪 越想要的東西越小心翼翼 越小心翼翼就越在失去 沒(méi)那么想要的東西 反倒輕而易舉 或者說(shuō)反倒因你的灑脫而...
    不作妖的你真可愛(ài)閱讀 140評(píng)論 0 0
  • 夢(mèng)想成真_df9a閱讀 118評(píng)論 0 0