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

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

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

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

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

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

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

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

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

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



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


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