Git——历史操作和回退

一、历史记录查看
 1、查看提交的历史记录:git log,展示的信息比较全面
Git——历史操作和回退_第1张图片
 2、使一次记录的提交日志展示在一行:git log --pretty=oneline
在这里插入图片描述
 或者:git log --oneline,只能显示当前指针所在版本及其之前的版本记录
Git——历史操作和回退_第2张图片
 或者:git reflog,这里展示的每次提交时的指针位置,对于我们的版本回退很有帮助,其中的数字表示指针需要移动几次会回到指定版本
Git——历史操作和回退_第3张图片
二、版本重置(三种方式)
Git——历史操作和回退_第4张图片
 1、基于索引值操作[推荐]:可前进和后退
  命令:git reset --hard 索引值(reflog中的索引值即可)
Git——历史操作和回退_第5张图片
 2、使用^符号:只能后退,几个代表后退几步,移动的是当前指针HEAD的位置
Git——历史操作和回退_第6张图片
 3、使用~符号:只能后退,后退的步数可以指定,比使用^更便捷
Git——历史操作和回退_第7张图片
三、reset 命令的三个参数对比
  除了上面的–hard之外,git还提供了–soft和–mixed两个参数,这三个参数的对比如下:
  --soft:仅仅在本地库移动 HEAD 指针,相当于只改变本地库的内容,不改变暂存区和工作区的内容,如果使用–soft后退,则相当于使用git add添加或修改了新的内容至暂存区,但是还没有使用git commit提交至本地库,因为本地库的版本后退相遇对暂存区就是暂存区的前进
Git——历史操作和回退_第8张图片
  --mixed:在本地库移动 HEAD 指针并且重置暂存区,相当于本地库和暂存区的版本同时改变
Git——历史操作和回退_第9张图片
  --hard:在本地库移动 HEAD 指针,同时会重置暂存区和工作区,使暂存区和工作区的内容和本地库中指针指定的版本一致。此时相当于本地库和暂存区和工作区都做了版本调整,也就是说–hard操作会将暂存区和工作区刷新为本地库指针指向的位置

四、删除文件找回
 1、新建一个文件并提交至git本地库
Git——历史操作和回退_第10张图片
  能找回的文件必须是被git管理的文件
 2、将本地文件删除
Git——历史操作和回退_第11张图片
 3、把文件删除的操作提交至本地库
Git——历史操作和回退_第12张图片
 4、查看历史操作记录
Git——历史操作和回退_第13张图片
 5、删除文件的找回,实际上就是将版本后退至文件创建的提交位置
Git——历史操作和回退_第14张图片
  原理就是我们对本地库的任何操作都会被记录下来形成历史记录,这就是为什么我们可以做版本的前进和后退。同样本地文件的删除提交至本地库之后也会形成相应的记录,我们可以恢复至删除之前的版本,这样就相当于文件还没有被删除,类似于时空穿梭的场景。

  若文件的删除只是提交到暂存区,并未提交到本地库想恢复文件,其操作和将文件删除提交至本地库是一样的:
Git——历史操作和回退_第15张图片
Git——历史操作和回退_第16张图片
  这说明reset命令的–hard操作会将暂存区和工作区刷新为本地库指针指向的某个历史位置,因此文件删除能够恢复的前提是文件之前曾被提交至本地库(这才会产生文件存在的记录),也就是说文件是被git管理的。

五、比较文件差异
  使用git diff命令,将工作区的文件和暂存区或者本地库的文件进行比较
 1、工作区和暂存区的文件比较:不带文件名比较所有文件
Git——历史操作和回退_第17张图片
 比较具体的某个文件:加上具体的文件名称
Git——历史操作和回退_第18张图片
 2、工作区和本地库比较
Git——历史操作和回退_第19张图片

  Tip:对于Git只有将操作提交至本地库才会产生版本记录,在此之前是没有版本记录的。

你可能感兴趣的:(Git)