標籤:

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 |