Git使用教程--最詳細(xì)太伊、最傻瓜、最淺顯逛钻、真正手把手教僚焦!(二)

原文鏈接

請(qǐng)先配置好Git環(huán)境,參見
Git使用教程--最詳細(xì)曙痘、最傻瓜芳悲、最淺顯、真正手把手教边坤!(一)
Git使用教程--最詳細(xì)名扛、最傻瓜、最淺顯茧痒、真正手把手教肮韧!(二)

1.如何從遠(yuǎn)程庫克隆旺订?

上面我們了解了先有本地庫弄企,后有遠(yuǎn)程庫時(shí)候,如何關(guān)聯(lián)遠(yuǎn)程庫∏現(xiàn)在我們想拘领,假如遠(yuǎn)程庫有新的內(nèi)容了,我想克隆到本地來 如何克隆呢樱调?首先约素,登錄github届良,創(chuàng)建一個(gè)新的倉庫,名字叫testgit2.如下:

如下圣猎,我們看到:

現(xiàn)在士葫,遠(yuǎn)程庫已經(jīng)準(zhǔn)備好了,下一步是使用命令git clone克隆一個(gè)本地庫了样漆。如下所示:

接著在我本地目錄下 生成testgit2目錄了为障,如下所示:

2. 創(chuàng)建與合并分支

在版本回退里,你已經(jīng)知道放祟,每次提交鳍怨,Git都把它們串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支跪妥。截止到目前鞋喇,只有一條時(shí)間線,在Git里眉撵,這個(gè)分支叫主分支侦香,即master分支。HEAD嚴(yán)格來說不是指向提交纽疟,而是指向master罐韩,master才是指向提交的,所以污朽,HEAD指向的就是當(dāng)前分支散吵。
首先,我們來創(chuàng)建dev分支蟆肆,然后切換到dev分支上矾睦。如下操作:

git checkout 命令加上 –b參數(shù)表示創(chuàng)建并切換,相當(dāng)于如下2條命令
git branch dev
git checkout dev
git branch 查看分支炎功,會(huì)列出所有的分支枚冗,當(dāng)前分支前面會(huì)添加一個(gè)星號(hào)。然后我們?cè)赿ev分支上繼續(xù)做demo蛇损,比如我們現(xiàn)在在readme.txt再增加一行 7777777777777

首先我們先來查看下readme.txt內(nèi)容赁温,接著添加內(nèi)容77777777,如下:

現(xiàn)在dev分支工作已完成淤齐,現(xiàn)在我們切換到主分支master上束世,繼續(xù)查看readme.txt內(nèi)容如下:

現(xiàn)在我們可以把dev分支上的內(nèi)容合并到分支master上了,可以在master分支上床玻,使用如下命令 git merge dev 如下所示:

git merge命令用于合并指定分支到當(dāng)前分支上,合并后沉帮,再查看readme.txt內(nèi)容锈死,可以看到贫堰,和dev分支最新提交的是完全一樣的。
注意到上面的Fast-forward信息待牵,Git告訴我們其屏,這次合并是“快進(jìn)模式”,也就是直接把master指向dev的當(dāng)前提交缨该,所以合并速度非迟诵校快。合并完成后贰拿,我們可以接著刪除dev分支了蛤袒,操作如下:

總結(jié)創(chuàng)建與合并分支命令如下:

查看分支:git branch
創(chuàng)建分支:git branch name
切換分支:git checkout name
創(chuàng)建+切換分支:git checkout –b name
合并某分支到當(dāng)前分支:git merge name
刪除分支:git branch –d name

2.如何解決沖突?

先新建一個(gè)新分支膨更,比如名字叫fenzhi1妙真,在readme.txt添加一行內(nèi)容8888888,然后提交荚守,如下所示:

同樣珍德,我們現(xiàn)在切換到master分支上來,也在最后一行添加內(nèi)容矗漾,內(nèi)容為99999999锈候,如下所示:

現(xiàn)在我們需要在master分支上來合并fenzhi1,如下操作:

Git用<<<<<<<敞贡,=======泵琳,>>>>>>>標(biāo)記出不同分支的內(nèi)容,其中<<<head是指主分支修改的內(nèi)容嫡锌,>>>>>fenzhi1 是指fenzhi1上修改的內(nèi)容虑稼,我們可以修改下如下后保存:
</head是指主分支修改的內(nèi)容,>

如果我想查看分支合并的情況的話势木,需要使用命令 git log命令行演示如下:

3.分支管理策略

通常合并分支時(shí)蛛倦,git一般使用”Fast forward”模式,在這種模式下啦桌,刪除分支后溯壶,會(huì)丟掉分支信息,現(xiàn)在我們來使用帶參數(shù) –no-ff來禁用”Fast forward”模式甫男。首先我們來做demo演示下:
創(chuàng)建一個(gè)dev分支且改。
修改readme.txt內(nèi)容。
添加到暫存區(qū)板驳。
切換回主分支(master)又跛。
合并dev分支,使用命令 git merge –no-ff -m “注釋” dev
查看歷史記錄

分支策略:首先master主分支應(yīng)該是非常穩(wěn)定的若治,也就是用來發(fā)布新版本慨蓝,一般情況下不允許在上面干活感混,干活一般情況下在新建的dev分支上干活,干完后礼烈,比如上要發(fā)布弧满,或者說dev分支代碼穩(wěn)定后可以合并到主分支master上來。

4.bug分支

在開發(fā)中此熬,會(huì)經(jīng)常碰到bug問題庭呜,那么有了bug就需要修復(fù),在Git中犀忱,分支是很強(qiáng)大的募谎,每個(gè)bug都可以通過一個(gè)臨時(shí)分支來修復(fù),修復(fù)完成后峡碉,合并分支近哟,然后將臨時(shí)的分支刪除掉。
比如我在開發(fā)中接到一個(gè)404 bug時(shí)候鲫寄,我們可以創(chuàng)建一個(gè)404分支來修復(fù)它吉执,但是,當(dāng)前的dev分支上的工作還沒有提交地来。比如如下:

并不是我不想提交戳玫,而是工作進(jìn)行到一半時(shí)候,我們還無法提交未斑,比如我這個(gè)分支bug要2天完成咕宿,但是我issue-404 bug需要5個(gè)小時(shí)內(nèi)完成。怎么辦呢?還好,Git還提供了一個(gè)stash功能书蚪,可以把當(dāng)前工作現(xiàn)場(chǎng) ”隱藏起來”辣往,等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作峭判。如下:

所以現(xiàn)在我可以通過創(chuàng)建issue-404分支來修復(fù)bug了。
首先我們要確定在那個(gè)分支上修復(fù)bug,比如我現(xiàn)在是在主分支master上來修復(fù)的,現(xiàn)在我要在master分支上創(chuàng)建一個(gè)臨時(shí)分支田巴,演示如下:

修復(fù)完成后,切換到master分支上挟秤,并完成合并壹哺,最后刪除issue-404分支。演示如下:

現(xiàn)在艘刚,我們回到dev分支上干活了管宵。

工作區(qū)是干凈的,那么我們工作現(xiàn)場(chǎng)去哪里呢?我們可以使用命令 git stash list來查看下箩朴。如下:

工作現(xiàn)場(chǎng)還在笛臣,Git把stash內(nèi)容存在某個(gè)地方了,但是需要恢復(fù)一下隧饼,可以使用如下2個(gè)方法:

  1. git stash apply恢復(fù),恢復(fù)后静陈,stash內(nèi)容并不刪除燕雁,你需要使用命令git stash drop來刪除。
  2. 另一種方式是使用git stash pop,恢復(fù)的同時(shí)把stash內(nèi)容也刪除了鲸拥。

演示如下

5.多人協(xié)作

當(dāng)你從遠(yuǎn)程庫克隆時(shí)候拐格,實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來了,并且遠(yuǎn)程庫的默認(rèn)名稱是origin刑赶。

  1. 要查看遠(yuǎn)程庫的信息 使用 git remote
  2. 要查看遠(yuǎn)程庫的詳細(xì)信息 使用 git remote –v

如下演示

1. 推送分支:
推送分支就是把該分支上所有本地提交到遠(yuǎn)程庫中捏浊,推送時(shí),要指定本地分支撞叨,這樣金踪,Git就會(huì)把該分支推送到遠(yuǎn)程庫對(duì)應(yīng)的遠(yuǎn)程分支上: 使用命令 git push origin master
比如我現(xiàn)在的github上的readme.txt代碼如下:

本地的readme.txt代碼如下:

現(xiàn)在我想把本地更新的readme.txt代碼推送到遠(yuǎn)程庫中,使用命令如下:

我們可以看到如上牵敷,推送成功胡岔,我們可以繼續(xù)來截圖github上的readme.txt內(nèi)容 如下:

可以看到推送成功了,如果我們現(xiàn)在要推送到其他分支枷餐,比如dev分支上靶瘸,我們還是那個(gè)命令

$ git push origin dev

那么一般情況下,哪些分支要推送呢毛肋?master分支是主分支怨咪,因此要時(shí)刻與遠(yuǎn)程同步。
一些修復(fù)bug分支不需要推送到遠(yuǎn)程去润匙,可以先合并到主分支上诗眨,然后把主分支master推送到遠(yuǎn)程去。

2.抓取分支:
多人協(xié)作時(shí)趁桃,大家都會(huì)往master分支上推送各自的修改×苫埃現(xiàn)在我們可以模擬另外一個(gè)同事,可以在另一臺(tái)電腦上(注意要把SSH key添加到github上)或者同一臺(tái)電腦上另外一個(gè)目錄克隆卫病,新建一個(gè)目錄名字叫testgit2
但是我首先要把dev分支也要推送到遠(yuǎn)程去油啤,如下

接著進(jìn)入testgit2目錄,進(jìn)行克隆遠(yuǎn)程的庫到本地來蟀苛,如下:

現(xiàn)在目錄下生成有如下所示:

現(xiàn)在我們的小伙伴要在dev分支上做開發(fā)益咬,就必須把遠(yuǎn)程的origin的dev分支到本地來,于是可以使用命令創(chuàng)建本地dev分支:

$ git checkout –b dev origin/dev

現(xiàn)在小伙伴們就可以在dev分支上做開發(fā)了帜平,開發(fā)完成后把dev分支推送到遠(yuǎn)程庫時(shí)幽告。如下:

小伙伴們已經(jīng)向origin/dev分支上推送了提交梅鹦,而我在我的目錄文件下也對(duì)同樣的文件同個(gè)地方作了修改,也試圖推送到遠(yuǎn)程庫時(shí)冗锁,如下:

由上面可知:推送失敗齐唆,因?yàn)槲业男』锇樽钚绿峤坏暮臀以噲D推送的有沖突,解決的辦法也很簡(jiǎn)單冻河,上面已經(jīng)提示我們箍邮,先用git pull把最新的提交從origin/dev抓下來,然后在本地合并叨叙,解決沖突锭弊,再推送。

git pull也失敗了擂错,原因是沒有指定本地dev分支與遠(yuǎn)程origin/dev分支的鏈接味滞,根據(jù)提示,設(shè)置dev和origin/dev的鏈接:如下:

這回git pull成功钮呀,但是合并有沖突剑鞍,需要手動(dòng)解決,解決的方法和分支管理中的 解決沖突完全一樣行楞。解決后攒暇,再push:
我們可以先來看看readme.txt內(nèi)容了。

現(xiàn)在手動(dòng)已經(jīng)解決完了子房,我接在需要再提交形用,再push到遠(yuǎn)程庫里面去。如下所示:

因此:多人協(xié)作工作模式一般是這樣的:
首先证杭,可以試圖用git push origin branch-name推送自己的修改.
如果推送失敗田度,則因?yàn)檫h(yuǎn)程分支比你的本地更新早,需要先用git pull試圖合并解愤。
如果合并有沖突镇饺,則需要解決沖突,并在本地提交送讲。再用git push origin branch-name推送奸笤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哼鬓,隨后出現(xiàn)的幾起案子监右,更是在濱河造成了極大的恐慌,老刑警劉巖异希,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件健盒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扣癣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門惰帽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人父虑,你說我怎么就攤上這事该酗。” “怎么了士嚎?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵垂涯,是天一觀的道長。 經(jīng)常有香客問我航邢,道長,這世上最難降的妖魔是什么骄蝇? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任膳殷,我火速辦了婚禮,結(jié)果婚禮上九火,老公的妹妹穿的比我還像新娘赚窃。我一直安慰自己,他們只是感情好岔激,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布勒极。 她就那樣靜靜地躺著,像睡著了一般虑鼎。 火紅的嫁衣襯著肌膚如雪辱匿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天炫彩,我揣著相機(jī)與錄音匾七,去河邊找鬼。 笑死江兢,一個(gè)胖子當(dāng)著我的面吹牛昨忆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杉允,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼邑贴,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了叔磷?” 一聲冷哼從身側(cè)響起拢驾,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎世澜,沒想到半個(gè)月后独旷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年嵌洼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了案疲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡麻养,死狀恐怖褐啡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鳖昌,我是刑警寧澤备畦,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站许昨,受9級(jí)特大地震影響懂盐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糕档,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一莉恼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧速那,春花似錦俐银、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荔烧,卻和暖如春吱七,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹤竭。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工陪捷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诺擅。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓市袖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親烁涌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苍碟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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