搜尋此網誌

2024年5月10日 星期五

git rebase 將多筆 commit 合併

緣起:


    之前有在 "為你自己學 git" 上面讀到 rebase 的指令, 大概懂它的意思,不過就沒自己試過。最近有收到同事的抱怨,他在 merge 時發現有 conflict,在追查的時候碰上問題,因為我的 commit 很細碎,同個檔案,改個一行就 commit 一次,太多 commit 讓他追查時很不方便。

    想來練習用 rebase 把多個 commit 壓成一筆。


Visual Studio Git 初始化:


    我新增一個 console 專案來當練習,在 visual studio 右下有功能可以為專案新增版控


    選擇限本機,然後再按建立就行,它還會自動幫你弄好 .gitignore,蠻方便的


    再來就可以在左上方的工具列,Git(G) -> 檢視本機紀錄來查看 commit 紀錄



情境:


    我自己再多加了幾個 commit 來模擬,每次的 commit 都只在 Program.cs 新增一行程式

    
    
    拿 73bd3b92 那個 commit 來看,其它的 commit 都差不多,就數字不一樣而己。



git rebase:


    參考文章。我需要把這幾個 commit 合併成一個 commit


    visual studio 的 git 圖形化工具似乎沒有 rebase 的功能,所以要用 cmd 來下指令。上方工具列,檢視 -> 終端機,開啟 PowerShell


    輸入

git rebase -i 6127faa5

    它會進入互動的畫面,這邊的 commit 是由舊到新。


    除了第一行的 commit 不要動之外,其它的都把 pick 改成 squash。在這個編輯器裡的操作模式跟 linux 裡的 vim 一樣,我習慣按 i 來編輯文字。


    輸入完成後,按下 Ese,然後打 :wq 來儲存。等它一會,它會進入 commit message 編輯頁面


    我改成這樣,然後再按 Esc,:wq


    完成後,會有這些訊息,完成 rebase


    這時再去查看我們的 git 紀錄,可以看到,那四個 commit 成功合併了



git rebase --abort:


    我在操作時有遇到一個問題,就是我進入 rebase 的互動頁面後,不小心把終端機頁面給關掉,這時如果再次開啟終端機並執行 rebase 指令的話,它會有錯誤


    這時可以輸入 git rebase --abort 來放棄前次的 rebase 進度,之後就能再正常的使用 rebase 指令了。


沒有留言:

張貼留言