Git詳細(xì)教程(三)

Git —— 目前世界上最先進(jìn)的分布式版本控制系統(tǒng)屎开,高端大氣上檔次!

上一篇:Git詳細(xì)教程(二)

四、分支

什么是分支驹马?加入你現(xiàn)在正在開發(fā)一個(gè)新功能,突然線上出現(xiàn)了一個(gè)嚴(yán)重的bug需要立刻修復(fù)除秀,但是你正在開發(fā)的新功能已經(jīng)寫了一半了糯累,不能撤銷,也不能運(yùn)行册踩,使得項(xiàng)目處于殘廢的狀態(tài)泳姐。這個(gè)時(shí)候你就會用到分支功能了,創(chuàng)建一個(gè)新的分支暂吉,此時(shí)你就回到了你開始開發(fā)這個(gè)新功能最初的狀態(tài)(也是最后一次提交的狀態(tài))胖秒,在這個(gè)新分支上進(jìn)行修改嚴(yán)重bug,修改完畢之后進(jìn)行提交慕的,然后再回到原來分支上繼續(xù)開發(fā)你完成一半的新功能阎肝。

1、分支的新建肮街、切換风题、合并、刪除

一開始創(chuàng)建倉庫的時(shí)候嫉父,Git會默認(rèn)給我們一個(gè)master分支(可以理解為主分支沛硅,實(shí)際與其他分支沒有任何區(qū)別),而且我們之前的提交都是在master分支上完成的

HEAD指向的就是當(dāng)前的分支绕辖,假設(shè)目前的狀態(tài)就是已經(jīng)提交完新版本了摇肌,現(xiàn)在我們要開發(fā)一個(gè)新功能,代號為newfunc引镊,為此我們創(chuàng)建一個(gè)新的分支朦蕴,并在此分支上開發(fā)這個(gè)新功能篮条,終端執(zhí)行:

$ git branch newfunc      //創(chuàng)建一個(gè)名字為newfunc的分支
$ git checkout newfunc    //切換到該分支

然后我們就開始在此分支上進(jìn)行開發(fā)了,寫到一半時(shí)吩抓,突然領(lǐng)導(dǎo)發(fā)現(xiàn)了一個(gè)嚴(yán)重的線上bug讓我們立刻解決并發(fā)布涉茧,顯然很著急,但是現(xiàn)在新功能剛寫到一半疹娶,不能運(yùn)行伴栓,屬于殘廢狀態(tài),撤銷了吧也不可能畢竟辛辛苦苦寫了很長時(shí)間了雨饺,怎么辦呢钳垮?分支來幫你!此時(shí)將你正在寫的提交额港,相當(dāng)于保存進(jìn)度

$ git commit -a -m "newfunc first commit"

然后切換到master分支

$ git checkout master      //切換分支

這個(gè)時(shí)候你會發(fā)現(xiàn)你的工作目錄回到了你最后一次提交時(shí)的狀態(tài)饺窿,現(xiàn)在就可以解決那個(gè)嚴(yán)重bug了,針對此bug移斩,我們再新建一個(gè)分支

$ git checkout -b hotfix      //新建并切換到hotfix分支

接下來就是修改bug工作了肚医,修改完畢之后進(jìn)行提交

$ git commit -a -m "hotfix commit"

此時(shí)hotfix分支的工作全部完成了,然后就可以將其合并到你的master分支上了

$ git checkout master      //切換到master分支
$ git merge hotfix         //合并hotfix分支到當(dāng)前分支

既然已經(jīng)合并到一起了向瓷,你也就不再需要hotfix分支了肠套,那么就把它刪了吧

$ git branch -d hotfix      //刪除分支

現(xiàn)在你可以切換回你正在工作的分支newfunc繼續(xù)你的工作

$ git checkout newfunc      //切換分支

開發(fā)中............開發(fā)完畢了,提交

$ git commit -a -m "newfunc second commit"

此時(shí)猖任,newfunc分支的工作也全部完成了你稚,那么就可以將這兩個(gè)分支合并起來了,其操作跟之前你合并 hotfix 分支差不多

$ git checkout master      //切換到master分支
$ git merge newfunc        //合并newfunc分支到當(dāng)前分支

但是朱躺,Git的工作原理跟之前合并hotfix分支不一樣刁赖,因?yàn)?code>master分支所在提交并不是newfunc分支所在提交的直接祖先,出現(xiàn)這種情況的時(shí)候室琢,Git 會使用兩個(gè)分支的末端所指的快照(C5 和 C6)以及這兩個(gè)分支的共同祖先(C3)乾闰,做一個(gè)簡單的三方合并。

既然你的修改已經(jīng)合并進(jìn)來了盈滴,你已經(jīng)不再需要newfunc分支了涯肩。 現(xiàn)在你可以刪除這個(gè)分支了

$ git branch -d newfunc      //刪除分支

2、解決沖突

有時(shí)候合并操作不會如此順利巢钓。 如果你在兩個(gè)不同的分支中病苗,對同一個(gè)文件的同一個(gè)部分進(jìn)行了不同的修改,那么就會產(chǎn)生沖突

此時(shí)Git會暫停合并症汹,等待你去解決沖突硫朦,接下來我們需要查找那些因包含合并沖突而處于未合并(unmerged)狀態(tài)的文件

$ git status

任何因包含合并沖突而有待解決的文件,都會以未合并狀態(tài)標(biāo)識出來背镇。 Git 會在有沖突的文件中加入標(biāo)準(zhǔn)的沖突解決標(biāo)記咬展,這樣你可以打開這些包含沖突的文件然后手動(dòng)解決沖突泽裳,出現(xiàn)沖突的文件會包含一些特殊區(qū)段

<<<<<<<
=======
>>>>>>>

用過SVN的朋友相信都能看懂這個(gè),手動(dòng)解決完沖突破婆,刪除這些區(qū)段涮总,用$ git add命令對每個(gè)沖突文件標(biāo)記為已解決,再次運(yùn)行$ git status來確認(rèn)所有的沖突都已被解決

然后祷舀,提交

$ git commit -m "conflict fixed"

最后瀑梗,刪除newfunc分支

$ git branch -d newfunc

五、Git服務(wù)器

到目前為止裳扯,你基本上已經(jīng)掌握了Git最常用的功能抛丽,你應(yīng)該已經(jīng)有辦法使用Git來完成日常工作。 然而饰豺,為了使用Git協(xié)作功能亿鲜,你還需要有遠(yuǎn)程的Git倉庫 —— Git服務(wù)器。

Git服務(wù)器哪里來呢哟忍?兩種方式狡门,一是自己搭建陷寝,二是使用三方托管锅很。
如果你選擇方式一,自己搭建Git服務(wù)器凤跑,搭建簡單爆安,但是對服務(wù)器的設(shè)置和維護(hù)起來會消耗你大量的時(shí)間和精力,如果你想自己搭建仔引,可參考搭建Git服務(wù)器
你也可以選擇方式二扔仓,簡單、方便咖耘,托管網(wǎng)站有好多翘簇,比較有名的比如GitLabGitHub

參考鏈接
Git - Book
Git教程 - 廖雪峰的官方網(wǎng)站

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末儿倒,一起剝皮案震驚了整個(gè)濱河市版保,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌夫否,老刑警劉巖彻犁,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凰慈,居然都是意外死亡汞幢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門微谓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來森篷,“玉大人输钩,你說我怎么就攤上這事≈僦牵” “怎么了张足?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坎藐。 經(jīng)常有香客問我为牍,道長,這世上最難降的妖魔是什么岩馍? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任碉咆,我火速辦了婚禮,結(jié)果婚禮上蛀恩,老公的妹妹穿的比我還像新娘疫铜。我一直安慰自己,他們只是感情好双谆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布壳咕。 她就那樣靜靜地躺著,像睡著了一般顽馋。 火紅的嫁衣襯著肌膚如雪谓厘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天寸谜,我揣著相機(jī)與錄音竟稳,去河邊找鬼。 笑死熊痴,一個(gè)胖子當(dāng)著我的面吹牛他爸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播果善,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诊笤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巾陕?” 一聲冷哼從身側(cè)響起讨跟,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惜论,沒想到半個(gè)月后许赃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馆类,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年混聊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡句喜,死狀恐怖预愤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咳胃,我是刑警寧澤植康,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站展懈,受9級特大地震影響销睁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜存崖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一冻记、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧来惧,春花似錦冗栗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至葛虐,卻和暖如春胎源,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挡闰。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工乒融, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摄悯。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像愧捕,于是被迫代替她去往敵國和親奢驯。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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