记录一下关于 git 不同提交版本间切换的操作以及如何恢复至切换之前的版本。

  切换到之前提交的版本 —— git reset --hard

  笔者在使用 git 时,首先接触到了一个"黑魔法"命令 git reset --hard,通过该命令可以回退到 git 之前存在的提交。

  首先通过 git log 查看各个提交历史,可以看到各个提交版本的提交信息,包括其计算得到的 SHA-1 值。

    git log                      //查看存在的提交信息,包括其计算的 SHA-1 值,作者和简单描述

  在获得目标版本的信息后,可以通过 git reset --hard 命令回退到某次 git 的提交之中。

    git reset --hard       //回退到 SHA-1 值开始为 123456 的提交版本,上述命令只需要对应提交的 SHA-1 值的前几位作为参数即可

  注意:此命令会直接执行,而不会提示用户进行本地修改的提交等操作,所以在命令执行之前请保证所有的修改均已被妥善处置。

  查看分支切换记录 —— git reflog

  当使用 git reset --hard 命令从提交版本 A 回退到某个提交版本 B 后,若进行一定的任务后又需要返回提交的 A 版本时,此时通过 git log 查看提交记录可知,此时仅存在提交版本 B 之前的提交记录,而 B 之后的提交记录都无法显示出来。  此时使用 git reset --hard 命令会缺少分支 A 的 SHA-1 值作为参数。此时可以通过 git reflog 命令查看提交切换的记录。

    git reflog            //查看版本的切换记录,从而找到切换之前的版本的 SHA-1 值

  通过 git reflog 命令可以看到不同提交版本之间的切换记录,其中存在有切换版本的7位 SHA-1 开始值的信息,用户可以通过这个值使用 git reset --hard 命令指定版本 A 从而回退到切换回版本 B 之前的版本 A.

  

  查看提交标签 —— git tag

  在查看某个大型项目的 git 记录时,可以发现其中的提交记录是十分多的,想要仅通过提交时的简短描述确定每次提交的信息是困难的。另一方面,某些重要的更新如版本与新版本之间应该用额外的信息进行标注。如笔者在查看 mpeg 的软件 TMC13 时,即看到有众多的提交记录,而不同的版本提交则使用 git tag 做了标注。如笔者想要获取版本 0.0 的代码,此时直接通过 git log 查看提交记录是十分麻烦的( 提交记录很多 ),但是笔者可以通过 git tag 查看已有的标签,并通过标签定位到笔者需要的提交版本,并通过 git show 显示对应 tag 的信息,进而回退到对应的版本。

    git tag              //直接使用 git tag 命令则显示已有标签

  用户可通过 git show 查看对应标签的信息,包括其对应的提交版本等信息。

    git show tag1          //显示 tag1 标签对应的信息

  用户添加标签的方式有若干种,既可以单纯仅添加标签,也可以为标签添加注释信息,或者对已经提交的版本追加标签。

    git tag tag1                                    //为当前版本加入标签 tag1
git tag -a tag2 -m 'tag message' //在加入标签的同时为标签加入注释
git tag -a tag3 //为提交的 SHA-1 值开始位为 1234567 的提交追加标签 tag3

  在命令中加入 -d 参数表示删除对应标签。

    git tag -d tagn                //删除标签 tagn 对应的标签

  默认情况下,标签并不会被推送到远端服务器,只有用户显式的进行推送时,标签才会被 push 到远端服务器进而被所有使用该远端仓库的人看到。

    git push origin tag12          //将标签 tag12 推送到 origin 对应的远端仓库
git push origin --tags //一次将所有的标签推送到 origin 对应的远端仓库

  Git 工具 - 重置揭密 ,git - git 操作的细节,解释了 HEAD、Index 和 working directory 的意义,并讨论了 git reset --hard 命令的风险

  Git 基础 - 打标签,git - 介绍 git tag 的操作方式

  git reset --hard 操作后的数据恢复,掘金 - 关于 git reset --hard 命令操作后数据恢复的方法

git 学习笔记 —— 切换和恢复提交版本( git reset/reflog/tag 命令)的更多相关文章

  1. Git学习笔记(SourceTree克隆、提交、推送、拉取等)

    学习一下sourcetree使用git 目录 一 克隆Clone 二 提交Commit和推送Push 三 拉取pull和获取fetch 四 版本回退reset 五 检出checkout 六 标签Tag ...

  2. git学习笔记(二)—— 创建版本库&&版本管理

    一.创建版本库 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: mkdir gitHub_CXWcd gitHub_CXW git init Initialized empty G ...

  3. Git学习笔记——一个NB的分布式版本控制系统

    1. 命令: git init           创建新仓库 (在一个空文件下然后执行命令) git clone  + 路径      检出仓库,从本地或从服务器上 git status     查 ...

  4. Git 学习笔记之(一) 使用 git gui 从github上下载代码

    背景: 目前一些开源代码均在 GitHub上管理的,包括自己写的代码也可以放在上面进行管理.但问题是,当你换一台电脑,想要将你自己放在 GitHub 上的代码工程下载下来的时候,会遇到各种问题,目前可 ...

  5. Git学习笔记day01 从GitHub克隆版本库

    本期Git教程将会带您进入Git的世界,这是您使用分布版本控制工具Git的开端,祝您学习顺利! 步骤一  在Linux系统中下载Git 如果是Ubuntu系统,在shell中输入指令 sudo apt ...

  6. Pro Git 学习笔记

    Pro Git 学习笔记 文档地址:Pro Git原文地址:PRO GIT 学习笔记 git常见命令 1.Git起步 初次运行Git前的配置 用户信息 git config --global user ...

  7. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  8. [转]Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  9. Git学习笔记(一)创建版本库并添加文件

    最近从廖雪峰老师的个人网站上学习git,做点笔记. ★★★★★ 先注册自己的username和email,否则会报如下错误: 注册:git config --global user.name &quo ...

随机推荐

  1. kube-prometheus部署

    一.从git拉取相应yaml文件 git clone https://github.com/coreos/kube-prometheus.git 二.修改grafana及prometheus的serv ...

  2. golang 赋值与声明语法糖使用注意事项

    赋值与声明语法糖 基本用法略, 搜索即可 注意事项 类型推断 := 会自动进行类型推断, 当想要的类型不是自己想要的类型时需要进行类型转换 // i1 默认是 int 类型 i1 := 1 // 当需 ...

  3. 自定义标签&JSON数据处理

    最近几日去参加一些面试,多多少少有一些收获. 现将遇到的一些面试题,做一下分析和总结. 1.使用原生JS,不能使用递归,查找dom中所有以“<com-”开头的自定义标签tagName. < ...

  4. KB,MB,GB,TB,PB,EB,ZB,YB,BB

    1 Bit = Binary Digit 8 Bits = 1 Byte 1024 Bytes = 1 Kilobyte 1024 Kilobytes = 1 Megabyte 1024 Megaby ...

  5. 关于mpvue编写小程序的坑

    在引入第三方UI时 百度了很多方法,对于第一次接触的,在我们写vue的页面需要添加main.json 同时在写文件时,要在最后不要加 “,”  !!!并且在微信小程序会出现路径报错 在微信小程序中点击 ...

  6. 在linux上安装elasticsearch简称ES 简单介绍安装步骤

    1.简介 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 ...

  7. SQL Server外键关系是强制约束,外键值也可以是空(NULL)

    在SQL Server中,实际上外键值可不可以为空(NULL),和外键关系是不是强制约束无关. 我们先在SQL Server数据库中建立两张表People和Car,一个People可以有多个Car,所 ...

  8. C# vb .net图像合成-合成矩形

    在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...

  9. Jemeter学习环境部署。

    本文档中所有软件的下载地址 链接:https://pan.baidu.com/s/1RREUwlH7GtYMUWeiRjtWVg 提取码:zmjy 一.安装jdk 下载网盘中的jdk 双击jdk-8u ...

  10. CDH5.14.4中的Hue集成HBase

    1.进入CDH中的给HBase添加Thrift Server角色实例, 为了方便, 将Thrift Server添加到Hue同一主机 2.HBase Thrift Server中选择主机cm1: 3. ...