1、ShowHistory打開git日志

2、選中第2個commit,右鍵菜單Reset Current Branch to Here
3、選擇hard ,點Reset。
(1)hard :當使用這個指令後,工作區、暫存區的内容都會和目前head指向的内容相同。
也就是說hard之後,在本地分支中,所有代碼都已經回到了指定的commit版本了,在這個版本之後的代碼已經看不見了,想要看見的話,就先把本地分支删了,然後重新拉取該分支的遠端庫上的代碼。
(2)soft: 當使用這個這個指令後,head指針指向指定的commit,但是工作區、暫存區的内容不會發生變化。
也就是idea 目前分支的history送出記錄樹看不見後面版本了,并且指定commit版本之後的代碼檔案在idea中重新顯示為紅色或者藍色,表示這個檔案未送出
(當然,這隻是本地分支中未送出,對遠端分支暫時還沒任何影響)
這個時候再重新commit一次,這樣就把這個commit版本之後的所有版本合并為一個新的commit了。後面隻要強制push,用本地分支覆寫遠端分支,這樣就能實作多次commit合并為一次的效果。
(3)其他的用不着,自行百度
4、然後commit 送出到本地(先别直接push,否則又會和遠端分支的合并了)
5、使用指令行方式強制覆寫遠端分支
參考自:https://blog.csdn.net/ManyPeng/article/details/81095744
(1)這個遠端分支隻有你一個人在開發
此時沒有其他人會進行送出操作,那麼可以直接進行強制推送 git push --force origin branchName,–force可以直接了解為用你本地分支的狀态區覆寫掉遠端origin分支的狀态,也就是執行過後,本地的分支什麼樣,遠端分支就什麼樣
(2)遠端分支有多人開發
此時如果你貿然的使用–force指令,會有覆寫掉其他人送出代碼的風險。比如,小明和小紅兩個人同時在feature分支上進行開發,小明已經在feature分支上送出了一部分代碼,而小紅此時執行了rebase操作,是以如果想要推送到遠端倉庫就必須使用 - -force 參數,而小紅推送成功之後就會覆寫掉小明送出的代碼(前面說過–force就是用本地狀态覆寫掉遠端狀态)。在這種情況下,推薦另外一種更安全的指令git push --force-with-lease origin branchName 使用該指令在強制覆寫前會進行一次檢查如果其他人在該分支上有送出會有一個警告,此時可以避免覆寫代碼的風險。