如果推送了多余或者錯誤的文件,是有必要撤銷推送的,不然可能會對其他協同人員造成巨大的影響。
1、選擇想要回退到的版本。

這里一定要選擇想要回退到的版本,如果選擇錯誤提交的版本,相當於回到錯誤版本,沒有意義。
2、這里是重置的四個選項,對應了不同的操作,需要謹慎選擇。

Soft
在選擇的回退點之后的所有更改將會保留並被 Git 追蹤。這就意味着回退到了未提交狀態,會將文件放到 Local Changes 中的 Changes 下面。
這種方式回退到了推送前的狀態,最符合撤銷的期望,推薦選擇。
Mixed
在選擇的回退點之后的所有更改將會保留但不會被 Git 追蹤。這就意味着回退到了未添加狀態,會將文件放到 Local Changes 中的 Unversioned Files 下面。
Hard
在選擇的回退點之后的所有更改都會被丟棄(包括未提交和已提交的文件)。這種方式會刪除回退點之后的所有文件,影響巨大,除非真的有此需要,否則不推薦使用。
Keep
在選擇的回退點之后的所有已提交的更改會被丟棄,但未提交的文件會被完整地保存下來。如果真的有此需要,可以選擇。
3、選擇模式后點擊 Reset 即可回退。

4、此時只是本地回退了,並沒有影響到遠程,所以還需要推送。

這里沒有看到可推送的內容,因為確實沒有提交文件供推送。
5、此時要想影響到遠程需要選擇強制推送。

6、如果是 master 分支,強制推送會不可選擇,這是因為對主分支有保護,需要更改設置。

去掉保護的分支,保存。

8、再次推送,發現有強制推送的選項了。



9、強制推送完成,查看本地日志。

已經沒有想撤銷的那次推送記錄了。
10、查看遠程倉庫上是否存在那條推送記錄。

可以看到,Gitee 上也沒有了想撤銷的推送記錄,撤銷成功。
注意
盡量還是在推送的時候謹慎,千萬不要以為可以撤銷就隨意推送。
以上的撤銷基於一個人改一個分支的代碼沒有問題,但如果多個人改一個分支的代碼,因為每個人的推送時間不可控,如果別人在你執行撤銷操作前推送了代碼,這樣的撤銷是會將別人推送的代碼也撤銷掉的,非常危險。
版本
Git:2.35.1.2
IDEA:2021.3.3
