我们对已经提交到demo.txt文件再做一次修改,添加上天气情况,则修改好的文件内容为:

之后不要忘了提交到仓库。

那么此时,我们就有了三个不同版本的文件了,分别是:

Create a new file:

Add week:

Add weather:

像这样,我们频繁的修改文件,又频繁的提交文件到版本库里,像极了我们玩游戏的时候,不停的闯关,不停的存档读档等。为了方便记忆和演示,我们只编辑了一个两三行的文件来进行修改和提交。而在实际工作中,面对的往往是数以千行记的代码或文件,或数以十记的各种版本号,我们很难记住哪个版本对文件的哪部分内容进行了哪些修改。此时我们可以查看历史记录:

git log命令会从近到远的显示我们对文件做的修改和文件的版本号,即我们的提交日志。如果我们只想看到提交的版本号和说明的话,就对刚才的命令加上相应的参数再试一次

我们可以看到,这一串串字母和数字相结合出现的内容其实就是我们每次提交的commit id,即版本号。和SVN不一样,Git所使用的版本号并不是递增的阿拉伯数字,而是通过SHA1计算出来的一个使用十六进制表示的数字。而至于为什么Git要使用这么长一串数字来作为版本号的原因,那自然也是清晰可见的。我们知道,Git是分布式版本控制系统,那么既然是分布式的,就不可避免的会出现多人同时在同一个版本库里工作的情况,如果只是单纯的使用阿拉伯数字来定义版本号,那么解决工作中的版本号冲突的问题可能比解决工作更频繁。

当我们需要进行版本回退的工作时,我们首先要知道当前版本是哪个版本,通常在Git中,使用HEAD来表示当前版本,HEAD^代表上一个版本,HEAD^^代表上上一个版本,HEAD~100代表往前数的第100各版本。

如果我们要把当前的版本Add weather回退到之前的Add week版本,那就可以这样操作:

然后我们查看一下回退之后的文件内容,发现确实回退了。

此时,我们再看一下历史记录

发现之前最新的那个版本Add weather已经不见了,也就是说我们现在要想再回来的话已经回不来了。但是,真的是这样的吗?其实,只要我们当前的Git窗口没有关闭,我们往上查找之前使用过git log的那个命令,找到Add weather的版本号,之后再使用命令即可:

查看一下文件内容,发现确实已经是最新的那个版本了。

也就说,我们不仅可以从现在回退到之前的任何一个版本,也可以从之前的版本回到之后的版本中。

Git的版本回退速度非常快,这是因为在Git内部有一个指向当前版本号的HEAD指针,当我们进行回退版本的操作时,实际上就是把HEAD指针的指向从最新版本指向了想回退的版本,然后顺便也把工作区的文件给更新了。

                

之前所说的那种回退版本之后又前进版本的方法只适用于没有退出git的命令窗口的情况,当我们电脑关机之后,git命令窗口退出了之后,我们其实也可以使版本前进的。

首先我们使用git reflog命令来查看我们想要前进的版本的版本号,这个命令记录了我们的命令:

查找到之后,我们便可以使用reset命令来使版本前进了。

总结:版本回退前,使用git log来查看提交历史,以便确定我们要回退的版本号;版本前进前,使用git reflog查看历史命令,以便确定要前进的版本号。

git reset与git revert

假设有提交过程A -> B -> C,现在想回退到B:

方法一:reset到B,丢失C:

A -> B

方法二:再提交一个revert反向修改,变成B:

A -> B -> C -> B

C还在,但是两个B是重复的

根据实际需求,也许C就是瞎提交错了(比如把密码提交上去了),必须reset;如果C就是单纯修改,现在又要改回来,将来可能再改成C,那就revert

Git之版本回退与前进相关推荐

  1. Git之版本回退和分支合并

    版本回退 有时候开发一个功能,发现思路不对,需要回退到某个版本. 使用git进行版本控制,就可以随意回退到任意版本 这种操作叫 回滚 git -log 该命令显示从最近到最远的提交日志. 每一次提交都 ...

  2. Git本地版本回退与远端版本回退(回滚)

    一个commit对应这一个版本,有一个commit id,40位的16进制数字,通过SHA1计算得到,不同的文件计算出来的SHA1值不同(有很小的几率相同,可忽略),这样每一个提交都有其独特的id.每 ...

  3. git的版本回退教程(带你一步一步操作)

    在之前的文章中我们已经学会了如何使用git提交文件.下载更新文件.那么在git中如何进行版本回退呐 首先,在本地建立一个git项目,并且与 远程服务端(github) 上的项目进行关联(如果这一步骤有 ...

  4. Git 版本管理之git神器版本回退(版本回退-已经commi t尚未push到remote仓库)

    起语: 版权声明: 腾讯课堂->零声学院. 我只是用来方便学习 && 复习!!! 我只是一个学习者, 从来不对我说过的话负责, 大家看到谨慎参考!!! 版本回退-已经commi ...

  5. 【学了就忘】Git操作 — 26、Git中版本回退(reset --soft)详解

    文章目录 1.`git reset --soft`命令介绍 2.示例详解 git reset命令可以实现Git版本回退,其有三个选项,可以完成三种不同效果的回退. 1.git reset --soft ...

  6. git小乌龟版本回退方法

    https://blog.csdn.net/weixin_37542119/article/details/105223818

  7. Git -- 基本操作 之 版本回退

    现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...

  8. Git HEAD 意思详解 和版本回退

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 http://www.liaoxu ...

  9. 【Git笔记2】必知习惯和如何版本回退

    良好的习惯会让工作和生活如鱼得水,在使用git的时候有些必知习惯和概念你要get一下,总有些许失误,如:已经提交了不合适的修改到版本库时还没有把自己的本地版本库推送到远程,想要撤销本次提交,或者已经p ...

最新文章

  1. Properties文件的XML格式
  2. 工作总结19:文档参考
  3. 等待读取完毕 java_java – 等待来自客户端读取消息的套接字服务器
  4. MySQL 索引的面试题总结
  5. Apache Kylin权威指南3.1 为什么要增量构建
  6. 软件签名不一致是什么意思
  7. B2B2C多用户商城系统源码 Java商城源码
  8. js 动态生成表格案例
  9. PPT分享 | 怎么在区块链上保护隐私?
  10. kindle的mobi格式的文件,怎么转换成txt文件供一版阅读器来使用?
  11. matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
  12. 遗传算法 神经网络 深度学习 概率论 模糊数学 之间有什么区别?
  13. 2021-04-13
  14. 计算机在信息处理中的作品用,计算机信息处理技术在办公自动化中的运用
  15. [译]PG15加速排序性能
  16. 在ssd上win10和linux双系统,windows 10 ssd ubuntu hdd双系统
  17. python爬虫之selenium的使用
  18. 分布式 | 拜占庭将军问题
  19. 打包一沓开源的 C/C++ 包管理工具送给你!
  20. 魔术师的猜牌术(1)

热门文章

  1. SCP批量拷贝指定文件
  2. jsp+java中小学排课系统
  3. 详解AUTOSAR:什么是AUTOSAR?(理论篇—1)
  4. 计算机设备预计净残值,电子设备折旧年限及残值率
  5. linux vim命令翻页,详解Vim编辑器翻页控制命令
  6. 日本留学签证丢失如何补办
  7. 网站设计公司有哪些?如何找到可靠的网站设计公司?
  8. Unity3D iPhone开发入门 (转)iPhoneSettings.
  9. 车载网络技术——CAN总线基础
  10. 一个很酷的在线生成漫画头像的网站