Git版本穿梭及查看历史记录
1、查看历史记录
1.1、gti log
yang@yang MINGW64 /d/GitWorkSpace/weChat (master)
$ git log
commit 4192b7bc9316b13cd85aca0237fa5017a924abb1 (HEAD -> master)
Author: yang <yang@email.com>
Date: Sun Oct 21 23:37:47 2018 +0800
third commit file good<E3><80><82>txt
commit 616419d780feafb9953d3e45f610835df0b8d158
Author: yang <yang@email.com>
Date: Sun Oct 21 23:19:01 2018 +0800
modify good.txt commit all
commit a5e0e46d42e3566004b35d7e3a5f53dbd6ea3b3b
Author: yang <yang@email.com>
Date: Sun Oct 21 22:57:38 2018 +0800
<E8><BF><99><E6><98><AF><E6><88><91><E7><9A><84><E7><AC><AC><E4><B8><80><E6>
<AC><A1><E6><8F><90><E4><BA><A4><EF><BC><8C><E6><96><B0><E5><BB><BA><E4><B8><80>
<E4><B8><AA>good.txt<E6><96><87><E4><BB><B6>
注意:(HEAD -> master) HEAD表示指针,指向当前git版本所在的位置。
1.2、git reflog
yang@yang MINGW64 /d/GitWorkSpace/weChat (master)
$ git reflog
4192b7b (HEAD -> master) HEAD@{0}: commit: third commit file good<E3><80><82>txt
616419d HEAD@{1}: commit: modify good.txt commit all
a5e0e46 HEAD@{2}: commit (initial): <E8><BF><99><E6><98><AF><E6><88><91><E7><9A>
<84><E7><AC><AC><E4><B8><80><E6><AC><A1><E6><8F><90><E4><BA><A4><EF><BC><8C><E6>
<96><B0><E5><BB><BA><E4><B8><80><E4><B8><AA>good.txt<E6><96><87><E4><BB><B6>
注意:HEAD@{1}表示当前指针跳到这一步需要多少步骤。
2、Git版本穿梭
2.1、版本变更的本质
2.2、基于索引值(git reset --hard 索引值)进行版本变更
如果你现在的工作目录(work tree)里搞的一团乱麻, 但是你现在还没有把它们提交; 你可以通过下面的命令, 让工作目录回到上次提交时的状态(last committed state):
git reset --hard HEAD
2.3、^符后退版本
后退一个版本
git reset --hard HEAD^
后退两个版本
git reset --hard HEAD^^
后退三个版本
git reset --hard HEAD^^^
2.4、~波浪符后退
后退一个版本
git reset --hard HEAD~1
后退两个版本
git reset --hard HEAD~2
后退三个版本
git reset --hard HEAD~3
3、hard和soft以及mixed参数对比
本地仓库、暂存区、工作区都移动
git reset --hard 索引值
只是在本地仓库移动指针
git reset --soft 索引值
在本地库移动指针,重置暂存区
git reset --mixed 索引值