Git(三):關於版本穿梭(前進後退版本)的總結

一、查看提交日誌

1.查看當前分支下的提交日誌

查看當前分支下的提交日誌的命令:

git log

這個命令可以查看我們在倉庫中當前分支下從最近到最遠的(以前的)詳細提交日誌。也就說這個命令不能查看在這之後的日誌提交記錄。
在這裏插入圖片描述
這裏看到的版本號是通過SHA-1(安全散列算法1,一種密碼散列函數)計算出來的。另外當我們的提交日誌顯示數量多於一頁時,可以使用空格j鍵向下翻頁、b向下翻頁,q退出。

當我們不需要太多詳細的信息時,可以添加下面兩個命令的參數來查看提交日誌:

git log --pretty=oneline

這個命令將在一行中顯示每一天提交日誌,如下:
在這裏插入圖片描述

git log --oneline

這個命令的--oneline則默認控制顯示版本號爲前7位,這與使用commit命令提交後顯示的信息中的版本號一致。
在這裏插入圖片描述

2.查看特定文件的提交日誌

查看特定文件的提交日誌的命令:

git log 文件名

使用這個命令上面用到的參數都是可以用的,規範是寫在文件名前,具體查看某個文件的提交日誌:
在這裏插入圖片描述
如果要查看提交文件時文件的改動,加上-p參數即可:
在這裏插入圖片描述

3.查看整個倉庫的提交日誌

查看整個倉庫的提交日誌的命令:

git reflog

reflog 命令可以顯示整個本地倉庫的所有commit , 包括所有 branch 的 commit , 甚至包括已經撤銷的 commit , 只要 HEAD 發生了變化, 就會在 reflog 裏面看得到,而 git log命令 只顯示當前分支的commit ,並且不顯示刪除掉的 commit。
在這裏插入圖片描述
這個命令添加的HEAD@{移動到當前版本需要多少步},方便我們改變版本的操作。

二、前進後退版本

1.基於索引值(版本號)

git reset --hard [部分索引值]

在本地庫移動HEAD指針,並且重置暫存區和工作區和本地庫
在這裏插入圖片描述
而這次的後退版本操作也會有一個索引(版本號)進行記錄:
在這裏插入圖片描述
下面這個命令僅僅在本地庫移動HEAD指針,而工作區和暫存區版本不變。

git reset --soft [部分索引值]

執行這個命令後可以看到工作區的文件沒有變化。
在這裏插入圖片描述
而因爲本地庫版本前進到後面的版本,暫存區和工作區沒變,所以test.txt的狀態是modified的。
在這裏插入圖片描述
下面這個命令僅僅在本地庫移動HEAD指針,會重置暫存區,而工作區版本不變。

git reset --mixed [部分索引值]

執行這個命令,此時本地庫和暫存區的版本都改變了,而工作區不變,所以可以看到test.txt文件的狀態是modified且沒有保存到暫存區的。
在這裏插入圖片描述

2.使用^符號

git reset --hard HEAD^

使用^符號只能用於後退版本,一個 ^表示後退一個版本,有n個表示後退n個版本。

3.使用~符號

git reset --hard HEAD~n

使用~符號也是隻能用於後退版本,n值表示後退n個版本。

三、找回刪除的文件

首先需要知道的是,從未被添加到本地庫就被刪除的文件是無法恢復的。

如果刪除前,文件存在的狀態提交到了本地庫。而我們刪除的操作已經提交到了本地庫,使用git reflog查詢版本號,然後使用git reset --hard [版本號] 即可找回。

如果刪除文件後,尚未提交刪除操作到本地庫,就直接可以使用git reset --hard HEAD回到最新版本的初始狀態,
或者使用

#用暫存區中filename文件來覆蓋工作區中的filename文件。
#相當於取消自上次執行git add filename以來(如果執行過)的本地修改。
git checkout -- 文件名

git checkout命令 其實是用本地庫裏的版本替換工作區的版本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章