【Git】整理commit紀錄
前言
開發中可能會有許多不必要的commit點,
當然在commit前就要先謹慎的commit,不要隨便commit,
這邊舉例來說,
在剛開始的時候都會忍不住改一個東西就commit一次,
像是 修改錯字之類的,這樣的commit就有點多餘。
使用rebase的情況是,commit點還沒push到origin的時候。
使用rebase整理commit紀錄
今天可能會有個commit紀錄像這樣
情境舉例示範
假設分支名稱為 test
情境一: 保留程式,但移除commit訊息。
假設我們要保留 修改錯字
的程式,但不要commit紀錄
Step 1 : 查詢commit log紀錄
1 | git log --oneline test |
可能查出的結果如下:
1addcb3 (HEAD -> test) 新增功能
ada36ba 修改錯字
ffe3ke1 測試
gg34e67 測試還原程式
bb389s1 新增分類
Step 2 : 使用rebase
先確保當前分支在 test
1 | git rebase -i HEAD~2 |
HEAD~2 = 取最新的前兩筆
這時候會出現:
1 | pick 1addcb3 新增功能 |
先按下 i
(terminal編輯鍵)
terminal最下面會顯示-- INSERT --
代表可以輸入文字
Step 3 : pick 改為 squash
將上面的內容改成:
1 | pick 1addcb3 新增功能 |
按下esc 代表退出編輯模式
再按鍵盤輸入 :wq
:wq(保存退出)
接著會進入commit內容的編輯vim
一樣按 i 編輯後 > esc 退出編輯模式 > 輸入 :wq
這樣就完成修改commit紀錄了
可以看到最後結果
修改錯字 的程式被合併到 新增功能 的commit點
但是修改錯字的commit點消失了
情境二:移除commit點,並移除程式
Step 1 : 查詢git log
1 | git log --oneline test |
一樣假設查出的樣子如下,我們要移除 測試 & 測試還原程式
的commit點
1addcb3 (HEAD -> test) 新增功能
ada36ba 修改錯字
ffe3ke1 測試
gg34e67 測試還原程式
bb389s1 新增分類
Step 2 : rebase
取前四筆
1 | git rebase -i HEAD~4 |
會出現:
1 | pick 1addcb3 新增功能 |
Step 3 : pick改為drop
1 | pick 1addcb3 新增功能 |
terminal 編輯儲存的步驟可以複習情境一
這樣 測試 與 測試還原程式,這兩個commit點+程式 就會消失了
結論
重新複習一次
git rebase 的用法:
不要commit訊息紀錄,但是 要保留 程式碼
pick –改為–> squash
不要commit訊息紀錄,也 不要保留 程式碼:
pick –改為–> drop
如果commit已經被推到origin,不建議使用drop,建議使用
revert
,以免影響其他人。