Git学习日记(三)

Git学习日记(三)

导语

在上一篇当中我们简单介绍了初始化仓库,设置签名,以及如何向仓库提交文件,需要先用add命令提交到暂存区,之后使用commit提交到本地仓库。
那么在这一篇我们会继续之前的内容,主要涉及到实现版本的前进和后退,更换版本的三种方法,恢复永久删除的文件,以及文件的不同版本比较。

查看本地仓库

在上一篇中我们已经提交了创建的py文件,那么如何查看本地仓库中的文件呢。这里有三种方法

命令作用
git log打印当前日志内容:哈希值、签名、时间、解释信息,HEAD指针位置
git reflog打印当前日志内容:哈希值(部分),解释信息,HEAD指针位置,索引

现在我们来看一下效果
在这里插入图片描述
信息这样就打印出来了,一共有聊条记录,HEAD指针当前指向上面的文件信息。
这样打印出来的信息有一点冗杂,我们可以通过添加参数来简化一下打印结果。
在这里插入图片描述
git log --pretty=oneline 打印出来的只有哈希值、指针和文档解释,那么这样看起来的效果就比之前看起来更清爽。
当然git log --oneline 打印出来的结果把哈希值缩短了,看起来就更方便。

下面看一下git reflog的效果
在这里插入图片描述
可以看到除了之前的内容它多了一个 HEAD@{number} 这个number就是索引,等一会我们需要更换文件版本的话需要用到这个索引值。

小结
总的来说,命令git reflog是最有助于我们进行版本更替的,git log打印出来的数据信息最全面。我们我也可以通过添加参数的形式来简化打印结果。

版本更替

我在又重新建立了一个本地仓库。其中只有一个case.py文件。
每当你重写的时候,使用git status命令你就会发现,他会提示你该文件被修改,这时候因为你已经提交过一次了,你可以直接使用commit命令提交,不必经过暂存区。当然也可以按部就班的按步骤来。
在这里插入图片描述


可以看到我最后的文件内容,我每次提交的版本都比前一个版本多一行内容,方便我们检查效果。(除了最后一次我添加了两行 9和10)
在这里插入图片描述


当你提交之后你会发现会有这样一个信息,这比之前我们提交的时候多了一行内容,在最后依据中它说,一个文件被更改,添加了两行。说明已经在本地仓库的文件,如果你进行增删改的操作,git可以检测出来并以行为单位反馈给你结果
在这里插入图片描述


下面我们就来看一下如何进行版本的更换

在这里插入图片描述
一共有9个版本,HEAD指针指向的就是当前版本,也就是会打印到10
切换版本我们一共有三种形式,下面我们一一演示

方式命令
按照哈希值git reset --hard 22eede2
基于^符号(只能后退)git reset --hard ^ (后退几步就写几个^)
基于~符号(只能后退)git reset --hard ~2 (退几步就在~后面写几)

在这里插入图片描述
按照哈希值来更替版本可以看到712af3c是333的版本,使用reset更替之后替换到了这里,这时候我们可以看一下指针的指向
在这里插入图片描述
这里也是指向了333 的位置,那么我们现在把他复原尝试其它操作
在这里插入图片描述


下面尝试使用^符号进行操作

先查看当前指针位置
在这里插入图片描述
之后执行命令查看效果
在这里插入图片描述
可以看到第一次我们只用了一个^ 符号,后退到了8,第二次用了三个^^^ 符号他就跳到了我,当然也不难发现,他只能后退到之前的版本,不能向前更新到前面的版本,相较于第一种方式来讲,使用起来也比较麻烦。当然如果我们要后退的比较多,写很多个^显然也不现实,所以我们就有了第三中形式使用~符号。


我就继续当前的指针位置进行演示了
在这里插入图片描述
可以看到我要后退三步,那么他就从5退到了3。

小结一下:
我们可以看到,后面的无论哪一种方式都是只能后退,而不能前进,而且通过索引值的方式也没有哈希值操作要简便,所以说更推荐使用第一种方式。
另外我们可以发现,在我们更换版本时,如果我们的版本过多,选择更换我们需要的那一个就会很头疼,所以说养成一个良好的解释习惯很重要

另外,稍微提一下,除了hard还有其它参数,虽然我感觉没有hard还有以及不知道那样操作的意义在哪,但是既然学了就还是简单展示一下。

参数作用
–soft仅仅在本地库移动指针
–mixed在本地库移动HEAD指针,重置暂存区
–hard在本地库移动HEAD指针 ,重置暂存区,重置工作区

如果使用前两个参数进行展示更换的话,那么只是会按照介绍的那样移动指针,也就是说三个区域(工作区、暂存区、本地库)中的指针会产生相对位移,造成的结果就是。在我们上一篇有提示到git status 可以展示当前文件状态,如果当前文件存在库中或暂存区中会进行对比。如果说我们工作区的指针和暂存区的指针有相对位移(即指向位置不同)那么文件就会是红字,在上一篇看到过了 。暂存区和本地库的指针有相对位移,git status 命令显示的文件信息就是绿色。大家可以自己实验一下。因为我还没理解这样操作的意义何在,所以我就不演示了。


永久删除文件后找回

查看当前指针位置
在这里插入图片描述


我们可以看到它多了很多日志信息 moving to … 我们可以看到他也记录了我们之前的操作。
那么现在我们删除当前目录下的文件。尝试恢复一下。

在这里插入图片描述
我们可以看到删除之后,git status 中多了一个deleted状态,提示我们可以提交到工作区。那么我们就提交查看一下


在这里插入图片描述
有一点点神奇对吧,删除了依旧可以进行操作。
在这里插入图片描述

我们可以看到当前的本地库状况,的确提交到了本体库中。


那么恢复就是把指针指向之前存储的版本,我们可以看到之前10的版本的哈希值是fccd28d,那么我们尝试恢复一下
在这里插入图片描述
可以看到已经回来了。


不同版本之间的比较

git中有一个diff 命令用来比较当前文件和指定的版本我简单演示一下
我把当前文件进行了修改,删除最后一行,并把666改成1010
在这里插入图片描述
运行看一下结果
在这里插入图片描述
那么他和当前指针位置的版本进行比较,就可以发现差别修改的地方在哪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值