Git學習筆記之四:版本回退

最好在代碼回退前備份一下代碼,避免操作失誤

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撤銷操作

接下來我們分幾個可能的場景來分析一下實際情況下的處理辦法:場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file

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

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

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區的修改(刪除也算一種修改)全部撤銷,這裏有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區(但是之前提交過了,所以暫存區沒有文件),現在,撤銷修改就回到和版本庫(master裏面之前提交的文件)一模一樣的狀態;

一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。

總之,就是讓這個文件回到最近一次git commitgit add時的狀態。

推薦博文:https://www.cnblogs.com/Calvino/p/5930656.html


發佈了29 篇原創文章 · 獲贊 41 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章