git rebase 合併多個 commit

有個 JAVASEO 項目,由於種種原因前前後後拖了三個月,下週一上線,於是打算合到 master 上。可當合併時才記起,我都在 test_branch 分支上開發了,一開始從主分支派生的分支沒用到,同時由於歷史原因,這個測試分支和主分支不同步,不能直接合並。

出現問題了,就得解決問題。於是我就祭出了之前看的 rebase 合併多個 commit 的技巧,具體是這樣的,先查看這期需求開始到現在工提交了多少個 commit

$ git log --oneline --since "3 months ago" | wc -l
36

36 個,於是開始了我的表演, rebase36 提交,合併成一個

 git rebase -i HEAD~36

在這裏插入圖片描述
pick 改爲 s ,也就是 squash 的縮寫,意思是 git 會應用這個補丁,但會與之前的提交合並

:%s/^pick/s/g

同時保留最上面的 pick ,意思是 git 會應用這個補丁,以同樣的提交信息(commit message)保存提交,然後 wq 保存,Rebasing 後會彈出個窗口,修改下提交,不過太長了,我懶得修改了,因爲這些提交說明就是這次需求的點,繼續 wq 保存。

在這裏插入圖片描述
到這裏就成功的把 36 個合成了 1commit,把分支切到 master 上,然後 git cherry-pick 那個 commit-id 即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章