Skip to main content

Command Palette

Search for a command to run...

短心得-git rebase -i

Published
•1 min read•View as Markdown
短心得-git rebase -i

git rebase -i 以及預設編輯器修改方法

在git的常見指令當中,git rebase是一個工作時常用的到的東西;
尤其當本地端要和遠端的server同步的時候,
我們常常會下:

git pull --rebase

該指令原則上會將遠端的新commit(s)下載下來,
擺在本地端的HEAD上,最後再將本地端的commit(s)重新銜接上去;
在這個過程中,pull下來的分支被當成主幹,而本地端多出來的那些commit(s)則被視作要銜接上去的分支。

問題來了,如果我們在工作時共同開發的時候,
也許某些功能彼此的用途或目的比較一致,
我們會希望commits的順序是A -> D-> B -> C,
但本地目前是A -> C,遠端目前是D -> B,
如果進行pull rebase沒有發生衝突的話,
會變成D->B->A->C,顯然和我們想要的不同。

這個時候,一個比較簡單的方法是使用git rebase -i [commit-id]。

筆者使用自己之前練題放上github的repository當作範例:

假定我想要調整0148和0238的commit順序的話,
可以這麼下:

git rebase -i 971725c

這意義代表以971725c為基準(這個基底是不能調的!),
以互動的模式來幫我調整後面的commits,
接著只要在文字編輯器上將想調整的commit直接調順序即可。
當然,如果想要直接砍掉某個commit,也可以將pick改成drop,
它就會直接消失囉!(慎用XD)

另外一方面,如果是VSCode的話,可以考慮安裝GitLens的Extension,
操作起來會更直覺:

git rebase -i在有裝GitLens的狀況下可以直接拖拉

最後,有安裝VSCode的話,
預設編輯器應該會變成使用VSCode開啟。
(不管是rebase還是做commit都是)

但如果預設不是的話,
可以使用以下方式修改:
(請特別注意,由於VS Code的路徑內含空格,而且需要下--wait等待,
所以外側要下雙引號,然後內側路徑要用單引號括起來,
才不會出現路徑錯誤的問題。)

git config --global core.editor "'C:\Users\user\AppData\Local\Programs\Microsoft VS Code\bin\code' --wait"

以上提供大家參考~

More from this blog

是的,估計是需要針對留言點reply才會通知,

是的,估計是需要針對留言點reply才會通知, 我前一個留言說明是回在文章底下,它可能沒有被Medium視為同一串留言的回應, 所以最近我嘗試點reply在您前面的留言留了一份同樣的內容, 看來需要這樣才會通知到。 不好意思,我以後會再注意表達的方式避免有不同解讀造成誤會。 同時再次跟所有讀者說明,個人除非是特殊狀況需求, 否則不會沒事點開任何人的github,甚或對coding style進行評論; 因此,當回應或文章中提到任何推薦使用的工具, 或可以協助改善生產力的東東, 基本都是筆者個人覺...

Apr 4, 20251 min read

(限時)活動分享-Bybit Lauchpool PIRATE

白挖的加密貨幣,不香嗎? 寫在前面:(基礎+進階+面試篇)從 LeetCode 學演算法 + 面試成功指南 (3990元 長期有效) https://bit.ly/lc2022all 容筆者工商一下,「從Leetcode學演算法|進階篇」這次選了40道難度加深的LeetCode題目,同樣也會細部解說對應的技巧及須要掌握的演算法!同時這次購買進階篇的話,額外還加贈「從Leetcode學演算法|面試篇」!當中包含了面試準備須知分享,及訪談國內外不同經驗的工程師,讓你不論是想走前端/後端/一般軟工或者...

Jun 16, 20241 min read
(限時)活動分享-Bybit Lauchpool PIRATE
跟

跟著Desolve學程式

227 posts