Git分支操作

知識(shí)來源GitHub入門與實(shí)踐

在進(jìn)行多并行作業(yè)時(shí)熙卡,我們會(huì)用到分支鞭呕。在并行開發(fā)的過程中兆龙,往往會(huì)同時(shí)存在多個(gè)最新代碼狀態(tài)。從master分支創(chuàng)建feature-A分支和feature-B分支后帚豪,每個(gè)分支都有自己最新的代碼。master分支是Git默認(rèn)創(chuàng)建的分支草丧,因此狸臣,基本上所有的開發(fā)都是基于這個(gè)分支為中心的。

不同的分支昌执,可以同時(shí)進(jìn)行完全不同的作業(yè)烛亦。等該分支的作業(yè)完成之后再與master分支合并。

git branch ——顯示分支一覽表

git branch命令可以將分支名列表顯示懂拾。同時(shí)可以確認(rèn)當(dāng)前所在分支煤禽。

$ git branch
* master

可以看到master分支左側(cè)有"*",表示這是我們當(dāng)前所在分支岖赋。結(jié)果中沒有顯示其他分支名檬果,表示本地倉庫中只存在master一個(gè)分支。

git checkout -b ——?jiǎng)?chuàng)建、切換分支

如果想以當(dāng)前的分支為基礎(chǔ)創(chuàng)建新的分支选脊,我們需要用到git checkout -b命令

  • 切換到feature-A分支并進(jìn)行提交

    執(zhí)行下面命令看杭抠,創(chuàng)建名為feature-A的分支。

    $ git checkout -b feature-A
    Switched to a new branch 'feature-A'
    

    連續(xù)執(zhí)行下面兩條命令也可以收到同樣的效果

    #創(chuàng)建分支
    $ git branch feature-A 
    #切換分支
    $ git checkout feature-A
    

    創(chuàng)建feature-A分支恳啥,并將當(dāng)前分支切換為feature-A∑樱現(xiàn)在查看分支列表,會(huì)顯示我們處于feature-A分支下钝的。

    $ git branch
    * feature-A
      master
    

    現(xiàn)在修改代碼菩混,執(zhí)行g(shù)it add命令并進(jìn)行提交的話,代碼會(huì)提交至feature-A分支扁藕。想這樣不斷對(duì)一分支進(jìn)行提交操作沮峡,稱為“培育分支”。

    現(xiàn)在在README.md文件添加一行亿柑。

    # Git教程
    
    
    
    - feature-A
    

    然后提交邢疙。

    $ git add README.md
    $ git commit  -m "Add feature-A"
    [feature-A d7818ae] Add feature-A
     1 file changed, 3 insertions(+)
    

    于是,這一行就添加到feature-A分支中了望薄。

  • 切換到master分支

    現(xiàn)在看下master分支有沒有受到影響疟游。首先切換至master分支。

    $ git checkout master
    Switched to branch 'master'
    

    然后查看README.md文件痕支,會(huì)發(fā)現(xiàn)README.md仍然保持之前的狀態(tài)颁虐,并沒有添加文字。feature-A分支的更改不會(huì)影響到master分支卧须。只要?jiǎng)?chuàng)建多個(gè)分支另绩,就可以在互不影響的狀態(tài)下開發(fā)。

  • 切換回上一個(gè)分支

    現(xiàn)在花嘶,切換回feature-A分支笋籽。

    $ git checkout -
    Switched to branch 'feature-A'
    

    像上面這樣用"-"(連字符)代替分支名,就可以切換至上一個(gè)分支椭员。

  • 特性分支

    Git和Subversion等幾種管理版本不同车海。創(chuàng)建分支時(shí)不要連接中央倉庫就可以創(chuàng)建分支。因此隘击,當(dāng)今大部分工作流程中都用到了特性(Topic)分支侍芝。

    特性分支顧名思義,是集中實(shí)現(xiàn)單一特性(主題)埋同,除此之外不進(jìn)行任何作業(yè)的分支州叠。在日常開發(fā)中,往往會(huì)創(chuàng)建數(shù)個(gè)特性分支莺禁。穩(wěn)定分支的角色通常由master分支擔(dān)當(dāng)留量。

    之前我們創(chuàng)建了feature-A分支,這一分支主要實(shí)現(xiàn)feature-A,除feature-A的實(shí)現(xiàn)之外不進(jìn)行任何作業(yè)楼熄。即便在開發(fā)過程中忆绰,發(fā)現(xiàn)了BUG,也需要?jiǎng)?chuàng)建新的分支可岂,在新的分支中進(jìn)行修正错敢。

    基于特定主題的作業(yè)在特性分支中進(jìn)行,主題完成之后再與master分支進(jìn)行合并缕粹。只要保持這樣一個(gè)開發(fā)流程稚茅,就能保證master分支可以隨時(shí)供人查看。

  • 主干分支

    主干分支是剛才我們講解的特性分支的原點(diǎn)平斩,同時(shí)也是合并的終點(diǎn)亚享。通常人們會(huì)用master分支作為主干分支。

git merge——合并分支

接下來绘面,我們假設(shè)feature-A已經(jīng)實(shí)現(xiàn)完畢了欺税,接下來想要合并到主干分支中,首先切換到master分支揭璃。

  $ git checkout master
  Switched to branch 'master'

然后合并feature-A分支晚凿。為了在歷史記錄中明確記錄本次分支合并,我們需要?jiǎng)?chuàng)建合并提交瘦馍。因此歼秽,在合并時(shí)附加--no-ff參數(shù)。

  $ git merge --no-ff feature-A

隨后編輯器會(huì)啟動(dòng)情组,用于錄用合并提交的信息燥筷。

  Merge branch 'feature-A'
  # Please enter a commit message to explain why this merge is necessary,
  # especially if it merges an updated upstream into a topic branch.
  #
  # Lines starting with '#' will be ignored, and an empty message aborts
  # the commit.

默認(rèn)信息中已經(jīng)包含了是從feature-A分支合并過來的相關(guān)內(nèi)容。所以不必做任何更改呻惕。將編輯器中顯示的內(nèi)容保存荆责,關(guān)閉編輯器,然后就會(huì)看到下面的結(jié)果亚脆。

  $ git merge --no-ff feature-A
  Merge made by the 'recursive' strategy.
   README.md | 3 +++
   1 file changed, 3 insertions(+)

這樣一來,feature-A分支的內(nèi)容就合并到master分支中了盲泛。

git log --graph——以圖表的形式查看分支

用git log --graph命令進(jìn)行查看的話濒持,能夠清晰的看到特性分支(feature-A)提交的內(nèi)容已經(jīng)被合并。除此以外寺滚,特性分支的創(chuàng)建以及合并也都清楚明了柑营。

$ git log --graph
*   commit 4da435f984bd80b4dfd26df306206118febc0abe (HEAD -> master)
|\  Merge: 75816af d7818ae
| | Author: JiangCheng <zhou19970407@126.com>
| | Date:   Sun Jul 5 23:22:40 2020 +0800
| |
| |     Merge branch 'feature-A'
| |
| * commit d7818ae5a4b53c43473bef14ddd36c863bce23fc (feature-A)
|/  Author: JiangCheng <zhou19970407@126.com>
|   Date:   Sun Jul 5 00:00:28 2020 +0800
|
|       Add feature-A
|
* commit 75816af90c5a4e840330882f23a5e1d347f1b965
| Author: JiangCheng <zhou19970407@126.com>
| Date:   Thu Jul 2 23:20:25 2020 +0800
|
|     Add index
|
* commit 1ba27d6c696f5c1fe66c1b40df7397db9e55f83d
| Author: JiangCheng <zhou19970407@126.com>
| Date:   Wed Jul 1 22:53:10 2020 +0800

git log --graph命令可以用圖表的形式輸出,提交日志村视,非常直觀官套。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奶赔,更是在濱河造成了極大的恐慌惋嚎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件站刑,死亡現(xiàn)場(chǎng)離奇詭異另伍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绞旅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門摆尝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人因悲,你說我怎么就攤上這事堕汞。” “怎么了晃琳?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵讯检,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蝎土,道長(zhǎng)视哑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任誊涯,我火速辦了婚禮挡毅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暴构。我一直安慰自己跪呈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布取逾。 她就那樣靜靜地躺著耗绿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砾隅。 梳的紋絲不亂的頭發(fā)上误阻,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音晴埂,去河邊找鬼究反。 笑死,一個(gè)胖子當(dāng)著我的面吹牛儒洛,可吹牛的內(nèi)容都是我干的精耐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼琅锻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卦停!你這毒婦竟也來了向胡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤惊完,失蹤者是張志新(化名)和其女友劉穎僵芹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體专执,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淮捆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了本股。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攀痊。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拄显,靈堂內(nèi)的尸體忽然破棺而出苟径,到底是詐尸還是另有隱情,我是刑警寧澤躬审,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布棘街,位于F島的核電站,受9級(jí)特大地震影響承边,放射性物質(zhì)發(fā)生泄漏遭殉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一博助、第九天 我趴在偏房一處隱蔽的房頂上張望险污。 院中可真熱鬧,春花似錦富岳、人聲如沸蛔糯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚁飒。三九已至,卻和暖如春萝喘,著一層夾襖步出監(jiān)牢的瞬間淮逻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工阁簸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弦蹂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓强窖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親削祈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翅溺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354