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命令 其实是用本地库里的版本替换工作区的版本。

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