原文來自:http://smaij.com/git-%E7%89%88%E6%9C%AC%E5%9B%9E%E9%80%80/ php
若是咱們修改了文件。提交到github 版本庫後。發現代碼有點錯亂了。你想要回到上一個或者上兩個版本中去。那麼,很幸運,Github 提供有很方便的回滾功能。 咱們經過一組實驗來明瞭。 下面我commit 了三個版本。修改一個叫 test.php 的文件。 版本1:version 1.0git
第一次修改的時候。 **********************
版本2:version 2.0github
第二次修改的時候。 **********************
版本3:version 3.0shell
第三次修改的時候。 **********************
版本控制系統一個很重要的功能,固然就是管理各個版本間的問題了。Git 也是爲了處理這個問題而誕生的,Git 中有一個命令能夠查看歷史記錄。就是 git log 這個命令了。ide
這個命令顯示的是提交的記錄,在這裏我修改了三次後提交了三次。最近一次是version 3.0 ,最先一次是version 1.0 。 到這裏。你首先要知道你如今所處的是那個版本,如何回到那個版本。 在Git 中,使用命令 git reset 來操做進退。參數 HEAD 表示當前的版本,假如你當前已經退回到了version 2.0 版本。那麼你使用版本控制
git reset --hard HEAD
則會返回version 2.0 的版本IDget
2d9a6407f9becba08ce46ae55035e0c7f71da8b1
要回到當前版本的上一個版本去。就是用it
git reset --hard HEAD^
在 HEAD^^ 表示退回到兩個版本前。有多少個^ 就是退回到多少個版本去,若是不幸要退後25個版本。你也能夠io
git reset --hard HEAD~25
好,退回來了。忽然發現問題原來是最新版一個文件中缺乏了一個 ‘;’。此時怎麼辦。還能回去嗎? 能! 在用 git log 看到的版本中。最新的那些版本已經不在了。怎麼辦? github 已經意料到咱們會疏忽。因而。他幫咱們記錄了咱們的操做……感謝! 使用 git reflog 來查看你的每一次命令操做記錄class
這就好辦了。我要回到version 3.0 去。
好了好了。太好了 總結:
HEAD 指向的是當前的版本ID 。咱們也能夠使用它來穿梭到上下的版本去。
使用git log 能夠看到咱們git中的提交、回退、版本ID 等信息
使用git reflog 查看命令歷史。使用它來挽救過分回退