IDEA 合併多次commit為一個?
在InteliJ IDEA中如何將本地的多次commit合併為一次,在IDEA的什麼位置,知道的前輩希望能上圖。我知道命令怎麼用,不知道IDEA工具怎麼使用。
Git rebase –i HEAD~2
比如把這幾次commit弄成一次commit,相當於我只commit了一次
答完以後我只想吐槽下,這種操作還是命令行里來的方便。答案里提供了3種操作流程,個人習慣第2種方式。
---------------------------------------------------------------------------------------------------------------
IDEA里的操作方式:
1.點擊菜單VCS-&>Git-&>ShowHistory
2.在History頁上點擊Log
3.例子中有4個commit(將init commit看成第1個),假如要將上面最後2個commit(第4和第3個)壓縮成1個,那麼選中第2個commit(第3個的parent),右鍵菜單Copy Revision Number,把複製的commit sha1粘貼在一邊,防止粘貼板內容被後續的操作覆蓋掉
4.菜單VCS-&>Git-&>Rebase,勾上Interactive,Onto粘貼第3步中複製的commit sha1
5.在互動式rebase菜單中,將第一個選為pick,後面的都選為squash,點Start Rebasing
6.在Additional Rebase Input中編輯下壓縮以後的commit message
7.完工
另外,可以用以下命令實現:
git reset &<某個commit&> --soft;
git commit
IDEA里的操作方式:
1.同上
2.同上
3.選中第2個commit,右鍵菜單Reset Current Branch to Here
4.選擇Soft,點Reset。這裡選Mixed似乎也可以,IDEA中接下來的那個Commit Changes好像包含了git add的操作。
5.菜單VCS-&>Commit Changes,完成。
還有一種方式,利用以下命令實現:
git checkout &<要合併的commit中最舊的那個的parent&>;
git merge &<原本的分支&> --squash;git commit;#記錄下當前的commit sha1;
git checkout &<原本的分支&>;git reset &<記錄下的commit sha1&> --hard;
IDEA的操作方式:
1.同上
2.同上
3.目標同上,假設要壓縮的commit在master分支上,選中第2個commit,右鍵菜單Checkout Revision
4.菜單VCS-&>Git-&>Merge Changes,Branches to merge選擇master,勾上Squash commit,點擊Merge
5.菜單VCS-&>Commit Changes,選擇要commit的文件,編輯下Commit Message,點Commit。如果警告說當前在detached HEAD狀態,忽略,點Commit。
6.這時History的Log頁面上可以看到以下狀態,detached HEAD狀態可以看成是一個無名分支
7.選中detached HEAD,右鍵菜單Copy Revision Number,最好粘貼在一邊以防粘貼板被其它操作覆蓋
8.選中master所在的commit,右鍵菜單Branch master-&>Checkout
9.菜單VCS-&>Git-&>Reset HEAD,Reset Type選擇Hard,To Commit填入第7步中複製的commit sha1,點Reset。完工。
推薦閱讀:
※怎樣在 intelliJ 中開發 spark 應用?
※idea/webstorm的svn提交界面如何配置,使得新添加的文件/目錄也出現在列表中?
※Intellij IDEA用Swing開發,而eclipse是用IBM優化過的SWT/JFace開發,為什麼性能差這麼多?
※同樣的Lambda表達式在IntelliJ IDEA中能運行,在Android Studio中不能?
TAG:Git | IntelliJIDEA |