Git版本回退與撤銷修改


參考了廖雪峰Git教程:

版本回退 https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192

撤銷修改 https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536


 

 

版本回退

  HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

回退到上一個commit:

 

git reset --hard HEAD^

       直接指定commit id也是可以的。

       拓展:reset的三種模式

reset三種模式區別和使用場景

區別:

  1. --hard:重置位置的同時,直接將 working Tree工作目錄index 暫存區repository 都重置成目標Reset節點的內容,所以效果看起來等同於清空暫存區和工作區。

  2. --soft:重置位置的同時,保留working Tree工作目錄index暫存區的內容,只讓repository中的內容和 reset 目標節點保持一致,因此原節點和reset節點之間的【差異變更集】會放入index暫存區中(Staged files)。所以效果看起來就是工作目錄的內容不變,暫存區原有的內容也不變,只是原節點和Reset節點之間的所有差異都會放到暫存區中。

  3. --mixed(默認):重置位置的同時,只保留Working Tree工作目錄的內容,但會將 Index暫存區Repository 中的內容更改和reset目標節點一致,因此原節點和Reset節點之間的【差異變更集】會放入Working Tree工作目錄中。所以效果看起來就是原節點和Reset節點之間的所有差異都會放到工作目錄中。

作者:carway
鏈接:https://www.jianshu.com/p/c2ec5f06cf1a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

重新回到最新版本:

 

git reset --hard 最新版本commit id

      如果忘記了新版本commit id,可以通過

 git reflog

      查看。


 

撤銷修改

撤銷工作區修改

git checkout -- file

      命令中的--很重要,沒有--,就變成了“切換到另一個分支”的命令

撤銷暫存區修改

      git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用HEAD時,表示最新的版本。

     git reset HEAD <file>

 


 

 小結

場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。

場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD <file>,就回到了場景1,第二步按場景1操作。

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。

 

 


免責聲明!

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



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