iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0

來聊聊rebase

rebase本身就是兩個字組成,「re+base」

實際在做的時候,我們大概可以說re就是重新的意思,base就是分支的參考基準。

更仔細的說「base」:你這個分支是從哪裏生出來的。

「重新定義分支的參考基準」就是rebase的實際意義,換句話說,就是「嫁接」,如果玩過水果(額....我是說種水果

應該就會知道嫁接就是把某個枝子接在不同的枝子上。

rebase小實作

假如我現在人在cat這個分支上,我還有另外兩個支,一個是master主分支、一個是dog分支

git rebase dog

這個指令的意義基本上就是這樣:

「我是cat分支,我現在要重新定義我的參考基準為,使用dog來當我的參考基準」

總之,就像是....嫁接?

把cat分支長到一半的東西接到dog上面

誰rebase誰有差,就跟名義上PRO直接把ROC接過來一樣

取消rebase:用Reflog回溯+git reset

先回去看紀錄

git log --oneline

翻一下Reflog

git reflog

這個時候我上面使用rebase的紀錄38f1386就被找到了

接著就可以從一些內容裡找到什麼時候rebase的,然後我們就針對那個rebase的commit紀錄,輸入指令:

git reset --hard

然後如果要讓它回來,就輸入上面的代碼,就會讓原本rebase的東西回到原樣了!

使用ORIG_HEAD取消紀錄

這次用不同的分支:

git rebase new_Francis

完成嫁接之後,在輸入下面的指令:

git reset ORIG_HEAD --hard

ORIG_HEAD這個東東很特別,它會紀錄一些危險操作,比如merge、rebase,因為通常做這些會讓紀錄的歷史改變,所以輸入它,就可以不用擔心回不去啦XD

這樣做完,該取消的紀錄就取消了!

tags: 鐵人賽

上一篇
# Day25--還不Merge一下?
下一篇
# Day27--我是誰?我在哪?終於離開Vim了
系列文
Swift30天:從語法到觀念,告訴你在踏入實作前最好弄清楚的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言