Git恢復之前版本的兩種方法reset和revert


 

 

  在多人合作程序開發的過程中,我們有時會出現錯誤提交的情況,如交叉提交,活着有新代碼沒有pull直接commit等等一系列情況,此時我們希望能撤銷提交操作,讓程序回到提交前的樣子,本文總結了兩種解決方法:回退(reset)、反做(revert)。

 

一、RESET命令

Git reset 命令有三個主要選項:

git reset --soft; 
將HEAD引用指向給定提交。索引(暫存區)和工作目錄的內容是不變的,在三個命令中對現有版本庫狀態改動最小。 git reset
--mixed;
HEAD引用指向給定提交,並且索引(暫存區)內容也跟着改變,工作目錄內容不變,這個命令會將索引(暫存區)變成你剛剛暫存該提交全部變化是的狀態,會顯示工作目錄中有什么修改。 git reset
--hard;
HEAD引用指向給定提交,索引(暫存區)內容和工作目錄內容都會變給定提交時的狀態,也就是在給定提交后所修改的內容都會丟失(沒有commit的內容都會清空,所以請慎用哦)。

 

具體操作:

我們先分兩種場景,

場景1:本地commit了,但還沒push雲端

場景2:  本地commit后,並且push雲端了

 

對於場景1:


1. 查看版本號:
定位到項目下,使用命令“git log”查看歷史提交記錄,大概如下:

 

 

2. 根據你的需求,選擇上面三種的一種命令將版本回退:

如果想將上次的提交內容清空,就選擇reset hard,否則用默認reset就可以了

如下:找到你想回到的commit_id,執行

git reset 42079059ff7fe82d0c6cf9ff0fa5a4cef

你會發現代碼又變為未提交狀態了,后面可以修改再提交,或者拉下最新代碼避免沖突,再次提交都行。。

 

對於場景2:

對於已經push的稍微復雜點,我們可以用如下兩種方式解決

1、和場景1 一樣處理,然后提交的時候要注意下,這會兒用git push是會失敗的,因為我們本地庫HEAD指向的版本比遠程庫的要舊;

所以我們用“git push -f”強制推上去,就可以了。

 

2、使用git revert
原理: git revert是用於“反做”某一個版本,以達到撤銷該版本的修改的目的。

比如,我們commit了三個版本(版本一、版本二、 版本三),突然發現版本二不行(如:有bug),想要撤銷版本二,但又不想影響撤銷版本三的提交,就可以用 git revert 命令來反做版本二,生成新的版本四,這個版本四里會保留版本三的東西,但撤銷了版本二的東西。

具體操作:

1.、git log查看版本號:

2、使用“git revert -n 版本號”反做,版本號就是你想反做的那次commit_id,比如

git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861

執行完這個,你會發現你本地生成了逆向代碼,就是你反做那次修改的內容全被還原了,下面你就可以直接提交雲端了

(注意: 這里可能會出現沖突,那么需要手動修改沖突的文件)

 

 

over~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM