git rebase 命令

git rebase 命令
git rebase是一個(gè)非常有用的命令,但可能熟悉它的人比較少。下面介紹一下git rebase的常見用法像棘。

git rebase branch

我們?cè)谧鞣种Ш喜⒌臅r(shí)候最常用的就是merge操作,但是執(zhí)行merge之后壶冒,會(huì)產(chǎn)生一個(gè)新的commit缕题,例如:Merge branch 'branch-1'。這個(gè)commit把兩個(gè)branch合并到一起并作了一次新的提交胖腾。但是烟零,如果使用rebase的話就會(huì)避免這個(gè)問(wèn)題。我們來(lái)看一個(gè)例子咸作,下邊是我分別用merge和rebase之后的git log锨阿。

* 5eaa8f8 (HEAD -> master) commit 8
* fdadab0 commit 7
* 690e761 (branch-2) commit 10
* f8bcb41 commit 9
*   a1e3e91 Merge branch 'branch-1'
|\  
| * da2448e (branch-1) commit 6
| * c4ef94a commit 5
* | c70cc70 commit 4
* | 31fde3f commit 3
|/  
* faf3890 commit 2
* 0f1f7a8 commit 1

我的操作歷史如下:首先,在master創(chuàng)建進(jìn)行了兩次提交(commit 1记罚, commit 2)-> checkout新的分支branch 1 -> 在master上進(jìn)行兩次提交(commit 3墅诡, commit 4)-> 在branch 1上進(jìn)行兩次提交(commit 5, commit 6)-> checkout到master桐智,執(zhí)行g(shù)it merge branch-1书斜。然后merge完成后便產(chǎn)生了a1e3e91 Merge branch 'branch-1'這個(gè)提交。

接著我們演示rebase酵使,checkout 新分支branch 2 -> 在master上進(jìn)行兩次提交(commit 7荐吉,commit 8)-> checkout到branch 2上,進(jìn)行兩次提交(commit 9, commit 10)-> checkout到master執(zhí)行g(shù)it rebase branch-2口渔。這時(shí)我們來(lái)看主干分支样屠,并沒(méi)有產(chǎn)生多余的提交。

git rebase branch-2命令執(zhí)行的時(shí)候會(huì)把"master"(即當(dāng)前分支)分支里的每個(gè)提交(commit)取消掉缺脉,并且把它們臨時(shí)保存為補(bǔ)丁patch(這些補(bǔ)丁放到".git/rebase"目錄中)痪欲,然后把"master"分支更新到最新的"branch-2"分支,最后把保存的這些補(bǔ)丁應(yīng)用到"master"分支上攻礼。這些新應(yīng)用的commit將會(huì)是新的commit业踢,commit號(hào)會(huì)變。上例中commit 7礁扮,commit 8的commit號(hào)已經(jīng)變了(原有的commit號(hào)分別是:cc4df2d知举,c86a6da)瞬沦。

git pull --rebase

當(dāng)我們從遠(yuǎn)程拉代碼的時(shí)候如果使用:git pull --rebase,則會(huì)以rebase的方式進(jìn)行更新雇锡,而不是默認(rèn)的merge逛钻。

git rebase --interactive

git rebase用來(lái)修復(fù)commit,比如修改某次提交锰提,修改commit message曙痘,squash。該命令可以簡(jiǎn)寫為git rebase -i立肘。執(zhí)行該命令之前需要當(dāng)前branch已經(jīng)設(shè)定過(guò)upstream边坤,使用git branch --set-upstream-to=<remote>/<branch>可以設(shè)定upstream。執(zhí)行rebase -i命令后的交互如下谅年,我已經(jīng)針對(duì)commit做了修改:

GNU nano 2.5.3                    File: /home/focusj/3stone/diamond/.git/rebase-merge/git-rebase-todo                                                

pick c4a4b5d test
squash c4a4b6d test
drop c4a4b7d test

# Rebase 0df8fd7..c4a4b5d onto 0df8fd7 (1 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
                                                                 [ Read 20 lines ]
^G Get Help     ^O Write Out    ^W Where Is     ^K Cut Text     ^J Justify      ^C Cur Pos      ^Y Prev Page    M-\ First Line  M-W WhereIs Next
^X Exit         ^R Read File    ^\ Replace      ^U Uncut Text   ^T To Spell     ^_ Go To Line   ^V Next Page    M-/ Last Line   M-] To Bracket

下邊說(shuō)下幾個(gè)command的用處:
p:保留當(dāng)前commit茧痒,不做處理。
r:修改commit message踢故。
e:修改這個(gè)commit作的修改文黎。比如某個(gè)commit漏掉了什么配置惹苗,想要再提交新的文件; 或者刪除一些無(wú)用代碼殿较,等等都可以用這個(gè)命令。
s:保留這個(gè)commit的修改桩蓉,但是把它合并到前一個(gè)commit中淋纲。
d:刪除commit。
我們使用命令院究,只需要把命令放到mouge commit前邊保存退出既能生效洽瞬。


write on 2017-1-3

最后編輯于
?著作權(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ō)我怎么就攤上這事∶寄欤” “怎么了侦香?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵落塑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鄙皇,道長(zhǎng)芜赌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任伴逸,我火速辦了婚禮缠沈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘错蝴。我一直安慰自己洲愤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布顷锰。 她就那樣靜靜地躺著柬赐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪官紫。 梳的紋絲不亂的頭發(fā)上肛宋,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音束世,去河邊找鬼酝陈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛毁涉,可吹牛的內(nèi)容都是我干的沉帮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贫堰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼穆壕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起其屏,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喇勋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后偎行,有當(dāng)?shù)厝嗽跇淞掷锇l(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
  • 文/蒙蒙 一都办、第九天 我趴在偏房一處隱蔽的房頂上張望嫡锌。 院中可真熱鬧,春花似錦琳钉、人聲如沸势木。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)啦桌。三九已至,卻和暖如春及皂,著一層夾襖步出監(jiān)牢的瞬間甫男,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 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常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,478評(píng)論 1 26
  • 知道為什么間書的昵稱叫Juan(卷)柏嗎? 卷柏是一種植物生命力很頑強(qiáng)菌仁!它可以在干掉后浸在水中浩习,當(dāng)溫度...
    Juan柏閱讀 594評(píng)論 0 0
  • 《100天帶好一個(gè)團(tuán)隊(duì)》 進(jìn)度#301 主題: 團(tuán)隊(duì)溝通 001你所做的每一件事都是溝通,沒(méi)有確定當(dāng)務(wù)之急的情況下...
    海鷗老師閱讀 151評(píng)論 0 0
  • “中年危機(jī)”在百度百科的解釋是:中年危機(jī)济丘,也稱“灰色中年”谱秽,一般高發(fā)在39~50歲,在40~65歲之間的男性身上摹迷,...
    Aaron35閱讀 352評(píng)論 0 1