Git使用:版本回退
在Git中,我们可以用 git log命令查看我们修改的历史记录
C:\Users\Administrator\Documents\GitHub\learngit [master]> git log
commit 06da0ffc8ff902d1b7d55968dd2822a6e0cc7ac9
Author: Tryking <260119064@qq.com>
Date: Thu Mar 10 14:29:22 2016 +0800
add World
commit f4fa07feb10862f0d0d6a44fb88f5ede6ae75771
Author: Tryking <260119064@qq.com>
Date: Thu Mar 10 13:57:50 2016 +0800
wrote a readme file
git log命令显示从最近到最远的提交日志,我们可以看到2次提交,最近的一次是add World,最早的一次是wrote a readme file。
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:
C:\Users\Administrator\Documents\GitHub\learngit [master]> git log --pretty=oneline
06da0ffc8ff902d1b7d55968dd2822a6e0cc7ac9 add World
f4fa07feb10862f0d0d6a44fb88f5ede6ae75771 wrote a readme file
查看了修改的历史记录后,我们就可以用 git reset 进行版本回退了
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交06da0ffc8ff902d1b7d55968dd2822a6e0cc7ac9(这个是commit id,是一个SHA1计算出来的一个非常大的数字,用十六进制表示),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本“add World”回退到上一个版本“wrote a readme file”,就可以使用git reset命令:
C:\Users\Administrator\Documents\GitHub\learngit [master]> git reset --hard HEAD^
HEAD is now at f4fa07f wrote a readme file
之后我们可以用 cat 命令查看readme.txt的内容是不是回退回去的版本
C:\Users\Administrator\Documents\GitHub\learngit [master]> cat readme.txt
Hello
我们用 git log 再看看现在版本库的状态:
C:\Users\Administrator\Documents\GitHub\learngit [master]> git log
commit f4fa07feb10862f0d0d6a44fb88f5ede6ae75771
Author: Tryking <260119064@qq.com>
Date: Thu Mar 10 13:57:50 2016 +0800
wrote a readme file
最新的那个版本 add World 已经看不到了!想再回去已经回不去了,怎么办?
办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个add World的 commit id 是06da0ffc8ff…,于是就可以指定回到未来的某个版本:
C:\Users\Administrator\Documents\GitHub\learngit [master]> git reset --hard 06da
HEAD is now at 06da0ff add World
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
再看看readme.txt的内容:
C:\Users\Administrator\Documents\GitHub\learngit [master]> cat readme.txt
HelloWorld
Git可以记录你的每次命令:git reflog
现在,假如你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
Git提供了一个命令 git reflog 用来记录你的每一次命令:
C:\Users\Administrator\Documents\GitHub\learngit [master]> git reflog
06da0ff HEAD@{0}: reset: moving to 06da
f4fa07f HEAD@{1}: reset: moving to HEAD^
06da0ff HEAD@{2}: commit: add World
f4fa07f HEAD@{3}: commit (initial): wrote a readme file
这样你就可以看到你需要的 commit id 了,放心的回去吧!
Git使用:版本回退的更多相关文章
- Git(时光机-版本回退)
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...
- Git学习--版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...
- idea中git远程版本回退
idea中git远程版本回退 2017年10月15日 15:25:36 gomeplus 阅读数:19313 工作中遇到git远程仓库需要回退到历史版本的问题,根据网上的搜索结果结合自己的实践,整理了 ...
- git指令-版本回退
git指令-版本回退 回顾: 1. 修改文件 2. 添加到暂存区并提交 回顾对readme共三次修改: 1. 版本1:wrote a readme file Git is a version cont ...
- Git回版本回退
这里我们使用命令行的方式对已经提交的版本进行强行回退操作~~~ 一.将git的安装目录bin放到path路径中, 如下图所示: 二.进入cmd界面,依次输入下面内容即可(git 远程仓库 回退到指定版 ...
- git远程版本回退
本文为博主原创,未经允许不得转载: 之前在git提交版本时,发现将新开发的代码提交到了另一个分支上,为了不影响提交分支代码的 功能,需要回退到之前的版本. 在使用命令回退的时候,一直没有回退成功,有个 ...
- git实现版本回退
1. 首先查看自己的版本: ***:~/piaoshifu_object/epiao.piaoshifu.cn$ git log commit c8d5c67861d2d0e21856cc2b4f60 ...
- git reset 版本回退的三种用法总结
git reset (–mixed) HEAD~1 回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响) git reset –soft ...
- git reset 版本回退
git log 查看所有提交信息. commit 67692318180bed6b2a17db0708cfbe0231e33db3 (HEAD -> master) Author: kingBo ...
- git的版本回退探索
简介 今天改完代码匆忙提交,上线发现有问题,那怎么办?废话,赶紧回滚,那怎么回滚,开始用git reset [--soft | --mixed | --hard 命令,但这命令真的能达到我预期的效果吗 ...
随机推荐
- [BUUCTF]PWN——roarctf_2019_easy_pwn(详解)
roarctf_2019_easy_pwn 附件 步骤: 例行检查,64位程序,保护全开 试运行一下程序,看看大概的情况,经典的堆块的菜单 64位ida载入,改了一下各个选项的函数名,方便看程序(按N ...
- C语言程序设计:二分查找(折半查找)
目录 C语言程序设计:二分查找(折半查找) 1.什么是二分查找 2.二分查找的优点 3.二分查找的缺点 4.二分查找原理 5.源代码实现 6.后话 C语言程序设计:二分查找(折半查找) 1.什么是二分 ...
- CF60A Where Are My Flakes? 题解
Content 有人发现他的麦片不见了,原来是室友把它藏在了 \(n\) 个盒子中的一个,另外还有 \(m\) 个提示,有两种: \(\texttt{To the left of }x\):麦片在第 ...
- 如何把Electron做成一个Runtime,让多个应用共享同一个Electron
这个问题涉及到很多知识,而且要想把这个Runtime做好很绕. 下面我就说一下我的思路:(以下内容以Windows平台为基础,Mac平台和Linux平台还得去调查一下,才能确定是否可行) 首先,我们先 ...
- 总结Vue 第四天:vue-cli(Vue2.0 新手入门 — 从环境搭建到发布)
总结Vue 第四天:vue-cli(Vue2.0 新手入门 - 从环境搭建到发布) 一.Vue CLI----(Vue2.0 新手入门 - 从环境搭建到发布): ■ CLI是Command-Lin ...
- 【LeetCode】212. Word Search II 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 前缀树 日期 题目地址:https://leetco ...
- 【LeetCode】728. Self Dividing Numbers 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 循环 filter函数 数字迭代 日期 题目地址:h ...
- Leapin' Lizards(hdu 2732)
Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 『学了就忘』vim编辑器基础 — 96、末行模式中的相关命令
目录 1.在文档中显示行号 2.是否显示文档内容相关颜色 3.是否将查找的字符串高亮显示 4.是否显示右下角的状态栏 5.是否在左下角显示如"--INSERT--"之类的状态栏 6 ...
- oralce索引中INDEX SKIP SCAN 和 INDEX RANGE SCAN区别
INDEX SKIP SCAN 当表中建立有复合索引的时候,查询时,除复合索引第一列外,别的列作为条件时,且优化器模式为CBO,这个时候查询可能会用到INDEX SKIP SCAN skip scan ...