1 本地分支版本回退
回退到指定的commit
#1.查看提交的commit id #方式一 $git log --author=caojx --oneline -10 #查看作者是caojx的近10次的提交歷史 e48eac3 (origin/dev) 將原來的import oracle.sql.CHAR修改成String a6766f6 針對JT-KF投訴工單,新增了幾種情進行優化 090ab60 優化日誌打印 3b91323 (origin/public-dev) YWZC000248535-JT-KF傳輸到手機ESOP-ESOP-1 0397798 YWZC000248535-JT-KF傳輸到手機ESOP-ESOP-1 #方式二 $git reflog #2.查看某個commit id的修改 $git show e48eac3 #3.回退到指定的commit id版本 $git reset --hard commitId
HEAD
指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。穿梭前,用
git log
可以查看提交歷史,以便確定要回退到哪個版本。要重返未來,用
git reflog
查看命令歷史,以便確定要回到未來的哪個版本。這裏的回退指的是回退到工作區不是暫存區
2 自己遠程分支版本回退
如果代碼已經提交到自己的遠程倉庫,可以使用下邊的方案回退。
#1.查看commit id $git reflog #2.查看對應commit id 變更內容 $git show commmitId #3.本地先回退對應的commitId $git reset --hard commitId #4.強制推送到遠程分支,強制推送會使用本地分支覆蓋遠程分支 $git push -f origin 分支名稱(master)
3.git撤銷操作
git checkout -- file
。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD <file>
,就回到了場景1,第二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作區的修改(刪除也算一種修改)全部撤銷,這裏有兩種情況:
一種是readme.txt
自修改後還沒有被放到暫存區(但是之前提交過了,所以暫存區沒有文件),現在,撤銷修改就回到和版本庫(master裏面之前提交的文件)一模一樣的狀態;
一種是readme.txt
已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit
或git add
時的狀態。
推薦博文:https://www.cnblogs.com/Calvino/p/5930656.html