Git日常使用

前言

本次文章主要介紹git多人合作的時(shí)候如何使用分支開(kāi)發(fā)傲霸,操作以sourcetree和終端結(jié)合使用。

創(chuàng)建分支
比如master分支上有ABCD四個(gè)commit我們要在D這里開(kāi)一個(gè)新的分支出來(lái)修改bug凛辣。

     master :A---B---C---D      
       
                      1---2---3      fixbug
                    /
      a---b---c----d              master

這個(gè)時(shí)候我們分配一個(gè)人修改bug绝编,然后另一個(gè)人開(kāi)發(fā)新功能孕豹,開(kāi)了一個(gè)分支newfunction

                      f1---f2---f3      new function
                    /
      a---b---c----d                     master

現(xiàn)在假設(shè)我們的bug改完了,我們這個(gè)時(shí)候應(yīng)該把bugfix這個(gè)分支合并到主分支上,這時(shí)候我們應(yīng)該先把多個(gè)commit合并為一個(gè)辛辨,讓主分支保持簡(jiǎn)潔捕捂。

  • 現(xiàn)在的狀態(tài)
    image.png
  • 我們要切換到fixbug分支上,然后點(diǎn)擊終端sourcetree會(huì)自動(dòng)給你切換到這個(gè)分支上
  • 首先我們r(jià)ebase下主分支(因?yàn)槲覜](méi)找到在sourcetree上怎么做rebase操作斗搞,只有在終端進(jìn)行rebase 的操作)
  • 第一步跟新分支起點(diǎn)绞蹦,因?yàn)榭赡茉谖覀冃薷膄ixbug期間master分支可能已經(jīng)有跟新rebase master
  • 第二步合并fixbug上的多個(gè)commit
    • 打印log git log --oneline(后面的--oneline是為了讓log看的更清晰,不用打印作者之類的詳細(xì)信息)

      image.png

      我們要合f1榜旦、f2幽七、f3需要在f1前面一個(gè)commit 的id

    • 執(zhí)行合并命令git rebase -i b44bc23

      image.png
      注意紅色方塊,給你解釋這些字母是誰(shuí)的縮寫溅呢,以及作用澡屡,我們這里會(huì)用到 s把f2,f3兩個(gè)commit壓縮到f1里面

    • 把f2,f3的pick改為s然后保存退出(wq)

      image.png
      然后跟著提示,修改commit的信息

    • 這個(gè)時(shí)候我們回到sourcetree看下?tīng)顟B(tài)

      image.png
      我們有三個(gè)拉取和一個(gè)推送咐旧。【切記】這個(gè)時(shí)候千萬(wàn)不要拉取遠(yuǎn)端驶鹉,因?yàn)槲覀儎偛舝ebase操作的只是本地的節(jié)點(diǎn),所以遠(yuǎn)端分支上還是有3個(gè)commit.這時(shí)候我們應(yīng)該直接推送铣墨,但是因?yàn)檫h(yuǎn)端有拉取室埋,直接推送不會(huì)成功,我們需要切換到終端,進(jìn)行強(qiáng)推push -f(這個(gè)操作一定報(bào)確認(rèn)本地代碼無(wú)誤伊约,在主分支上一般會(huì)設(shè)置受保護(hù)姚淆,不允許push -f)

    • 完成push -f再查看狀態(tài)只有一個(gè)commit了
      image.png

      然后在切換到master上合并fixbug這個(gè)分支。
      image.png
      合并完成后fixbug分支已經(jīng)沒(méi)有用了屡律,直接刪除本地和遠(yuǎn)端的腌逢。
  • 解釋下我們剛才為什么要rebase 主分支,和為什么要把多個(gè)commit合并為一個(gè)
    • 首先是rebase 主分支超埋。假設(shè)master分支是我們線上App Store的版本搏讶,然后我們要開(kāi)發(fā)一個(gè)新的朋友圈功能,但是朋友圈功能不是一兩天就開(kāi)發(fā)完成的霍殴。在我們開(kāi)發(fā)這個(gè)新功能的時(shí)候我們線上的版本可能會(huì)遇到緊急的bug(比如崩潰)這時(shí)候我們就要先在master上修改并且上傳媒惕,這導(dǎo)致了我們朋友圈分支的代碼并沒(méi)有修改剛才的崩潰bug。這時(shí)候我們要做的就是把朋友圈分支的起點(diǎn)更新来庭,就用到了我們的rebase master這個(gè)命令(后面的master是分支名字妒蔚,也可以rebase到其他分支上)
    • 為什么要合并多個(gè)commit:這是為了主分支的整潔,比如朋友圈分支,開(kāi)發(fā)完后我們很多commit可能只是為了整理代碼面睛,而且我們最后只關(guān)心的是你把這個(gè)功能做完了絮蒿,以面向?qū)ο蟮乃枷胱鸢幔皇敲嫦蜻^(guò)程的保留所有的commit叁鉴。
      ps:前端時(shí)間同事,修改一個(gè)功能修改了大量代碼佛寿,很久以后發(fā)現(xiàn)一個(gè)以前沒(méi)有的bug(這時(shí)候已經(jīng)修改了很多其他東西)我們開(kāi)始追溯commit幌墓,好在他把改動(dòng)的commit都合并成了一個(gè),發(fā)現(xiàn)在他commit之前的代碼就是ok的冀泻,這也反應(yīng)了清晰的主分支也方便我們以后查找因?yàn)楦膭?dòng)帶來(lái)的bug
  • 附加一個(gè)回退版本常侣,有時(shí)候我們想把代碼回退到某一個(gè)節(jié)點(diǎn)
    image.png
    image.png
    這三個(gè)最后一個(gè)直接把代碼丟掉,所以慎重選擇弹渔,
    image.png
    我選的第二個(gè)他會(huì)把回退的代碼放到待提交區(qū)域胳施,這時(shí)候因?yàn)椴僮鞯倪€是本地git,所以遠(yuǎn)端還是會(huì)有可拉取肢专,但是千萬(wàn)不要拉取我們還是push -f強(qiáng)推上去

各位大神有什么其他常用的git命令也分享分享舞肆,一起學(xué)習(xí)進(jìn)步。
喜歡動(dòng)畫(huà)的朋友可以關(guān)注我的GitHub https://github.com/aizexin/AIAnimationDemo

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末博杖,一起剝皮案震驚了整個(gè)濱河市椿胯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剃根,老刑警劉巖哩盲,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異狈醉,居然都是意外死亡廉油,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門苗傅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)娱两,“玉大人,你說(shuō)我怎么就攤上這事金吗∈ぃ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵摇庙,是天一觀的道長(zhǎng)旱物。 經(jīng)常有香客問(wèn)我,道長(zhǎng)卫袒,這世上最難降的妖魔是什么宵呛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮夕凝,結(jié)果婚禮上宝穗,老公的妹妹穿的比我還像新娘户秤。我一直安慰自己,他們只是感情好逮矛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布鸡号。 她就那樣靜靜地躺著,像睡著了一般须鼎。 火紅的嫁衣襯著肌膚如雪鲸伴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天晋控,我揣著相機(jī)與錄音汞窗,去河邊找鬼。 笑死赡译,一個(gè)胖子當(dāng)著我的面吹牛仲吏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝌焚,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼裹唆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了综看?” 一聲冷哼從身側(cè)響起品腹,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎红碑,沒(méi)想到半個(gè)月后舞吭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡析珊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年羡鸥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忠寻。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惧浴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奕剃,到底是詐尸還是另有隱情衷旅,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布纵朋,位于F島的核電站柿顶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏操软。R本人自食惡果不足惜嘁锯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧家乘,春花似錦蝗羊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扑馁,卻和暖如春涯呻,著一層夾襖步出監(jiān)牢的瞬間凉驻,已是汗流浹背腻要。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涝登,地道東北人雄家。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像胀滚,于是被迫代替她去往敵國(guó)和親趟济。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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