log, reflog, rest命令
3.1 log命令
log命令可以显示所有提交过的版本信息。显示信息如下:
git log
commit 8e27eb62309a1e7aa2b6c348f6dfa595bcb09898
Author: Jin wang <11111111@111.com>
Date: Wed May 7 16:51:14 2014 +0800
append GPL
commit dae675a9170a2d60855a6d9f56268f42d9114f40
Author: Jin wang <11111111@111.com>
Date: Wed May 7 15:16:25 2014 +0800
add distributed
commit c412f7ee690fc80906670c38a762e815abd5e1be
Author: Jin wang <11111111@11.com>
Date: Wed May 7 14:11:58 2014 +0800
wrote a readme file
如果觉得信息显示太繁琐 可以加上参数 --pretty=oneline[只会留下commit id (版本号 (用SHA1字串表示))和 提交版本时的描述信息] 显示效果如下:
git log --pretty=oneline
8e27eb62309a1e7aa2b6c348f6dfa595bcb09898 append GPL
dae675a9170a2d60855a6d9f56268f42d9114f40 add distributed
c412f7ee690fc80906670c38a762e815abd5e1be wrote a readme file
commit id 是向前或向后回溯版本的必备参数。3.2 HEAD 值
HEAD 表示提交的最新版本。HEAD^表示上一个版本,HEAD^^表示上上个版本。HEAD~100表示往上100个版本。
3.3 reset命令
reset命令用于回退(撤销)一个提交。
reset命令参数(这里只列出一个):
-- head 彻底退回到某个版本 本地文件也会回退到指定版本。
reset 命令执行后如下:
git reset --hard HEAD^
HEAD is now at dae675a add distributed
使用 git log 查看日志,发现最后一次的提交已经不再显示,回退成功
git log
commit dae675a9170a2d60855a6d9f56268f42d9114f40
Author: Jin wang <111111111@111.com>
Date: Wed May 7 15:16:25 2014 +0800
add distributed
commit c412f7ee690fc80906670c38a762e815abd5e1be
Author: Jin wang <11111111@111.com>
Date: Wed May 7 14:11:58 2014 +0800
wrote a readme file
3.4 reflog
如果在回退以后又想再次回到之前的版本,可以用reflog查看到commit id 并使用reset设置
执行完 git reflog 后显示如下:
git reflog
dae675a HEAD@{0}: reset: moving to HEAD^
8e27eb6 HEAD@{1}: commit: append GPL
dae675a HEAD@{2}: commit: add distributed
c412f7e HEAD@{3}: commit (initial): wrote a readme file
执行 git reset --hard 8327eb6 回到指定的版本
git reset --hard 8e27eb6
HEAD is now at 8e27eb6 append GPL
总结:
git的版本回退速度很快,本质上是因为Git内部有HEAD指针,当回退版本的时候,只是单纯的移动指针,所以速度很快。 使用 log reflog reset 可以在各个版本之间自由移动。