[人生如果有 git 2] git rebase -i (pick)

Jc
6 min readOct 30, 2019

--

前情提要

上一集 的 [ 人生如果有 git 1 ] 小美在半信半疑的使用了 git rebase -i 的指令後,成功地刪除掉了總是令她感到悔恨不堪的那段記憶,分別是:

09a44f7 19歲 與初戀男友因誤會分手3e700fc 25歲 對於分手感到後悔

此時的她依然是 35 歲,在成功地改寫歷史移除那些痛苦的回憶,不就應該要像童話故事那樣子過著幸福快樂的日子了嗎?但此時的她不知道怎麼地總覺得哪裏不太對勁,於是她又用了 git log --oneline 檢視了一下目前自己所有的記憶:

小美成功刪除不想要人生後的記憶
$ git log --oneline729bb2a 35歲 空虛寂寞覺得冷
9944680 30歲 再信義區豪宅買了豪宅
9be2b15 22歲 出社會工作
06d690a 18歲 認識初戀男友熱戀期
e441280 17歲 剛上大學
63389d1 16歲 高中畢業

小美看著眼前的這一些回憶,突然看到遊標停留在的第一行:

729bb2a 35歲 空虛寂寞覺得冷

「空虛寂寞覺得冷 … ?」小美覆述了一次。

「對了!」在黑暗中突然閃過一道迅雷不及掩耳的電光,小美突然恍然大悟了過來,因爲她對於 35 歲的記憶印象(commit message)還停留在『空虛寂寞覺得冷』的狀態,難怪她才一直感到哪裏不對勁。

小美現在知道問題點出在哪了,但是對於該怎麼做依然沒有什麼頭緒,拿起手機想要打電話問老師,但是看著手機上顯示 04:13 告訴她老師現在應該不會接電話,她無法等到明天再像老師詢問,決定自己試著找到解答看看。

這時她突然想起上次使用了 git rebase -i 的時候出現的畫面,畫面上除了有著自己的記憶點以外,底下好像還有一大堆那時候根本沒注意看的文字,或許可以從哪裏找到一點蛛絲馬跡也說不定?

所以她再次地使用 git log --oneline 檢視了一下目前自己所有的記憶:

$ git log --oneline729bb2a 35歲 空虛寂寞覺得冷
9944680 30歲 再信義區豪宅買了豪宅
9be2b15 22歲 出社會工作
06d690a 18歲 認識初戀男友熱戀期
e441280 17歲 剛上大學
63389d1 16歲 高中畢業

找到 16 歲的時間點的 commit id: 63389d1,所以又在小黑窗上 key 下了:

$ git rebase -i 63389d1

於是 vim 的編輯畫面馬上又映入小美的眼簾:

  1 pick e441280 17歲 剛上大學
2 pick 06d690a 18歲 認識初戀男友熱戀期
3 pick 076bfa2 22歲 出社會工作
4 pick 4d74605 30歲 再信義區豪宅買了豪宅
5 pick c801282 35歲 空虛寂寞覺得冷
6
7 # Rebase 63389d1..c801282 onto 63389d1 (5 command(s))
8 #
9 # Commands:
10 # p, pick = use commit
11 # r, reword = use commit, but edit the commit message
12 # e, edit = use commit, but stop for amending
13 # s, squash = use commit, but meld into previous commit
14 # f, fixup = like "squash", but discard this commit's log message
15 # x, exec = run command (the rest of the line) using shell
16 # d, drop = remove commit
17 #
18 # These lines can be re-ordered; they are executed from top to bottom.
19 #
20 # If you remove a line here THAT COMMIT WILL BE LOST.
21 #
22 # However, if you remove everything, the rebase will be aborted.
23 #
24 # Note that empty commits are commented out

小美眨著精緻的眼眸正準備往下看一些艱深難懂的文字。

使用回憶 pick (use commit)

Commands:
# p, pick = use commit
....
.... 以下省略

「Command … p、pick, use commit …」小美喃喃自語著。

「use commit, commit 好像是 …」 上課老師講過的比喻突然在小美的腦海中自動開始播放起來:「commit 就像是一個你的記錄或者是記憶點…」,只是之後的內容她就腦中一片空白了。

「所以 commit 如果是我的回憶的話,pick(撿起) 代表『使用回憶(use commit)』,那就是代表在改變歷史的當中與 git 說這段回憶是我要撿起來(pick)使用的。」小美繼續她的思考。

於是小美又把視線移到 vim 編輯畫面的上半部顯示著她目前人生的記錄:

  1 pick e441280 17歲 剛上大學
2 pick 06d690a 18歲 認識初戀男友熱戀期
3 pick 076bfa2 22歲 出社會工作
4 pick 4d74605 30歲 再信義區豪宅買了豪宅
5 pick c801282 35歲 空虛寂寞覺得冷
....
.... 以下省略

這時的她突然發現她的記錄前面都預設帶有一個 pick 的文字,「撿起…回憶…?」突然間她好像懂了什麼了。

「所以說進入 git rebase -i 的互動模式的時候,git 預設會把每段記憶撿起來 pick,也就是使用這段記憶的意思,所以如果我不更改前面的 pick 字樣其實就已經是告訴 git 要使用回憶的意思!」小美又開始喃喃自語著。

小美好像發現什麼驚人的事實,突然間倒抽一口氣整個人往後倒,殊不知老師上課已經講過了,如果因爲這件事情在半夜打電話去把老師吵醒老師應該會森七七吧?

git rebase -i 的互動模式的時候,git 預設會把每段記憶撿起來 pick,也就是使用這段記憶的意思

「所以上次我在 19 歲的記憶刪除,與在 25 歲的記憶前面加上 d,其他的回憶沒有更動,但因為 git 預設就是設定為 pick,把我沒有更動的回憶撿起來,所以我才能繼續保有這些回憶,不然我現在大概什麼回憶都沒有了吧?」小美突然驚覺如果一個不小心就很有可能失去想要保留的回憶,差點嚇到吃手手,她也因此鬆了一口氣感謝 git 這樣子的預設防呆機制幫助她發生預期以外的意外。

瞬間的放鬆突然讓疲倦抓緊了時機肆無忌憚地突襲,於是她覺得她需要先去小睡一下,之後再繼續地往下尋找,也許能夠幫助她找到修改 35 歲『空虛寂寞覺得冷』記憶印象的方法。

--

--