場景
當我提交了本次修改到本地和遠程分支后,發現我本次提交還少了一些修改內容,或者說本次修改是完全錯誤的,然而也push到遠程倉庫去了。如何回退?
問題
已經提交到倉庫(本地和遠程倉庫)的內容如何利用IDEA回退到原來指定版本?
方法
有兩種方法:1、Revert操作 2、利用IDEA的Reset Head指針
影響
方法1的Revert操作會當成一個新的提交記錄,追加到提交日志當中,這樣便保留了原來的提交記錄。(推薦)
方法2的Reset Head指針,會拋棄原來的提交記錄,使Head指針強制指向指定的版本。
實驗環境

上圖是實驗環境。本次實驗只操作Readme.md文件。初始化時,master和演示使用的分支“git_demo”都是指向版本一:“版本1:第一次編輯”文本內容。當前操作分支為git_demo。
說明
本次實驗環境未必和您的情況完全相符,不過大致思路是相同的。如果您在解決問題過程中遇到沖突,解決就好了。
方法1:Revert操作
當在版本1基礎上進行修改內容,并提交本地、遠程倉庫后,發現提交的內容不是我想要的,或者是完全錯誤的,需要回退版本1。

步驟
在想要回退歷史版本上單擊鼠標右鍵,選擇“Revert”(見下圖)

這時彈出沖突對話框,雙擊沖突文件以解決沖突。(見下圖)

在解決沖突對話框中,決定最終的版本文件。(見下圖)

重新提交到本地倉庫(見下圖)
Push
同步遠程倉庫(見下圖)

這種回退的好處在于,如果后悔了“回退”這個操作,也可以回退到沒有回退之前的版本。因為歷史記錄還保留提交記錄。
方法2:Reset Head指針
當在版本1基礎上進行修改內容,并提交本地、遠程倉庫后,發現提交的內容不是我想要的,或者是完全錯誤的,需要回退版本1。

步驟在想要回退歷史版本上單擊鼠標右鍵,選擇“Reset Current Branch to Here”(見下圖)

在彈出的git reset 參數類型選擇框中,選擇Hard(見下圖),并Reset

本地倉庫回退到了版本1,需要同步遠程倉庫,執行push操作。
push
后,提示Push拒絕。打開Terminal,在本項目目錄下,輸入git push -f 強制同步遠程倉庫。



同步后,會發現,git日志丟失了版本1以后的提交。
總結
- Revert操作其實就是回退操作,默認是回退到最近一次提交點,也可以回退到指定提交點,就像本次實驗演示的。
- Revert的操作其實也是設置Head指針。
- 其實比較推薦Revert操作,畢竟可以后悔。方法2中git push -f 強制同步操作并不推薦使用,在團隊協作環境中可能會引發問題。
- 在方法2中,選擇git reset參數選擇的是hard,這種參數適合場景是我只想回退到指定版本的文本。工作區里的內容可以放棄,版本2完全放棄。其實也可以選擇Mixed。Mixed作用是在設置Head指針時,保留當前工作區里的文本內容。這樣方便直接修改,適合于提交的內容有誤,只想修正回來就可以了這種情況。(對比效果見下圖)


在回退過程中,可能您的情況不會像本實驗那么簡單,也就是說會出現沖突情況。那么只需要解決沖突即可。
結尾
除了Hard和Mixed選項,其它回退選項的效果演示可以訪問這里: Git Reset 模式演示
回退版本的方法可能還有很多,本次實驗也是片面的。難免有些錯誤遺漏的地方,還請各位老師們不要吝惜各自的才華,懇請老師們多多指正
到此這篇關于詳解IDEA git分支回退指定的歷史版本的文章就介紹到這了,更多相關IDEA git分支回退指定歷史版本內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- idea手動刷新git分支的詳細教程
- IDEA怎么切換Git分支的實現方法
- idea+git合并分支解決沖突及詳解步驟
- idea切換git地址并刷新右下角git分支
- idea2020最新版配置maven的方法
- IDEA 重新導入依賴maven 命令 reimport的方法
- 解決idea git切換多個分支后maven不生效的問題