在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 了,放心的回去吧!

最新文章

  1. JavaWeb——Listener
  2. SSIS 包单元测试检查列表
  3. C# 模拟鼠标移动与点击
  4. NGUI3.x Button事件
  5. 【转】velocity 显示List和Map方法
  6. 分层导航and隐藏导航
  7. springmvc:BeanNameViewResolver访问内部资源视图对象和访问外部资源视图对象
  8. JS函数式编程【译】第二章总结
  9. codevs 1135 选择客栈
  10. 普通用户登录Oracle DB Control
  11. 《Qt编程的艺术》——8.2 显示目录层次
  12. reason: &#39;unable to dequeue a cell with identifier Cell
  13. 转载-Linux Shell 数组建立及使用技巧
  14. JAVAFX-5 开发应用
  15. BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配
  16. composer 自动加载 通过classmap自动架子啊
  17. flask请求上下文
  18. 自定义控件详解(五):onMeasure()、onLayout()
  19. Expm 2_1 k-路合并操作问题
  20. Pappus一阶矩公式

热门文章

  1. 阿里面试题: (a,b,c)组合索引, 查询语句select...from...where a=.. and c=..走索引吗?
  2. 联盛德 HLK-W806 (十二): Makefile组织结构和编译流程说明
  3. Java面向对象~类和对象&amp;方法,类方法
  4. 什么是SEO配置
  5. MyBatis学习(四)MyBatis一对一关联查询
  6. 【LeetCode】1154. Day of the Year 解题报告(C++)
  7. 【LeetCode】401. Binary Watch 解题报告(Java & Python)
  8. 【LeetCode】55. Jump Game 解题报告(Python & C++)
  9. 【LeetCode】640. Solve the Equation 解题报告(Python)
  10. Docker 与 K8S学习笔记(五)—— 容器的操作(上篇)