有個 JAVA
的 SEO
項目,由於種種原因前前後後拖了三個月,下週一上線,於是打算合到 master
上。可當合併時才記起,我都在 test_branch
分支上開發了,一開始從主分支派生的分支沒用到,同時由於歷史原因,這個測試分支和主分支不同步,不能直接合並。
出現問題了,就得解決問題。於是我就祭出了之前看的 rebase
合併多個 commit
的技巧,具體是這樣的,先查看這期需求開始到現在工提交了多少個 commit
。
$ git log --oneline --since "3 months ago" | wc -l
36
共 36
個,於是開始了我的表演, rebase
前 36
提交,合併成一個
git rebase -i HEAD~36
把 pick
改爲 s
,也就是 squash
的縮寫,意思是 git 會應用這個補丁,但會與之前的提交合並
,
:%s/^pick/s/g
同時保留最上面的 pick
,意思是 git 會應用這個補丁,以同樣的提交信息(commit message)保存提交
,然後 wq
保存,Rebasing
後會彈出個窗口,修改下提交,不過太長了,我懶得修改了,因爲這些提交說明就是這次需求的點,繼續 wq
保存。
到這裏就成功的把 36
個合成了 1
個 commit
,把分支切到 master
上,然後 git cherry-pick
那個 commit-id
即可。