原文来自:http://smaij.com/git-%E7%89%88%E6%9C%AC%E5%9B%9E%E9%80%80/


如果我们修改了文件。提交到github 版本库后。发现代码有点错乱了。你想要回到上一个或者上两个版本中去。那么,很幸运,Github 提供有很方便的回滚功能。 我们通过一组实验来明了。 下面我commit 了三个版本。修改一个叫 test.php 的文件。 版本1:version 1.0


第一次修改的时候。
**********************


版本2:version 2.0


第二次修改的时候。
**********************


版本3:version 3.0


第三次修改的时候。
**********************


版本控制系统一个很重要的功能,当然就是管理各个版本间的问题了。Git 也是为了处理这个问题而诞生的,Git 中有一个命令可以查看历史记录。就是  git  log  这个命令了。



这个命令显示的是提交的记录,在这里我修改了三次后提交了三次。最近一次是version 3.0 ,最早一次是version 1.0 。 到这里。你首先要知道你现在所处的是那个版本,如何回到那个版本。 在Git 中,使用命令 git reset 来操作进退。参数 HEAD 表示当前的版本,假如你当前已经退回到了version 2.0 版本。那么你使用


git reset --hard HEAD


则会返回version 2.0 的版本ID


2d9a6407f9becba08ce46ae55035e0c7f71da8b1


要回到当前版本的上一个版本去。就是用


git reset --hard HEAD^


在 HEAD^^ 表示退回到两个版本前。有多少个^ 就是退回到多少个版本去,如果不幸要退后25个版本。你也可以


git reset --hard HEAD~25


好,退回来了。突然发现问题原来是最新版一个文件中缺少了一个 ‘;’。此时怎么办。还能回去吗? 能! 在用 git log 看到的版本中。最新的那些版本已经不在了。怎么办? github 已经意料到我们会疏忽。于是。他帮我们记录了我们的操作……感谢! 使用 git reflog 来查看你的每一次命令操作记录



这就好办了。我要回到version 3.0 去。



好了好了。太好了   总结:

  • HEAD 指向的是当前的版本ID 。我们也可以使用它来穿梭到上下的版本去。

  • 使用git log 可以看到我们git中的提交、回退、版本ID 等信息

  • 使用git reflog 查看命令历史。使用它来挽救过度回退