Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退

137 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、前言

讲讲小张的感受:我没有接触过Git,所以看了很多视频,对于入门使用确实只要知道git clone,git add,git commit,git push,git merge ,确实也就足够了。但是我很好奇背后的原理,为什么要用git add到暂存区而不是直接git commit?很多指令之间为什么要按一定的顺序执行?所以这个系列我以初学的时候,小白的角度从安装到工作原理(有的是我自己的见解,如果感觉不对,欢迎指正),再到实际应用!另外,推荐看一遍第三个参考视频,然后看一下第四个参考视频,对工作原理的讲解和实际应用确实不错!

二、Git远程命令实践

实际操作过程中,可以用编译器的集成插件去实现,但插件按钮也是以指令命名的,所以先学会指令,插件很容易上手。这里只介绍git指令如何去操作

2.1git reset 移除暂存区

当我们将文件加入暂存区以后,想要修改一下再提交,可以使用git reset

image-20220120200653705

image-20220120200657979

执行git add后执行git status,窗口也会提示移除暂存区的指令git restore --staged <filename>

image-20220123184542563

2.2 git log+git reflog+git reset 版本回退

首先提交了两次文件。第一次新建1.0.txt,git commit -m "A",第二次把1.0删除,提交2.0.txt,git commit -m "B",作为例子

image-20220119175732527

回退完成后,当前最新的记录"2.0.txt"就消失了,如果想再回到2.0,利用relog查看历史提交记录

image-20220119180006151

这里可以理解为HEAD记录了一系列指针,将每一次的变动链在一起(并不是每一次都保存所有内容而是保存变动)。git reset操作就是在移动指针的位置。回退之后,最新的指针就会被删除,需要用git reflog去找所有的记录

下一期介绍

  • git fetch 拉取远程仓库
  • git pull 拉取远程仓库
  • git push 推送本地到远程仓库
  • git fetchgit pull 有什么区别?