git(6)查询git历史记录(一)

来源:互联网 发布:开源商城 java 编辑:程序博客网 时间:2024/05/22 01:54

git(6)查询git历史记录(一)

Posted by 姜立 on 2011 年 10 月 03 日 in Git |
Subscribe

对历史的记录和管理是版本管理系统的关键功能,在git中,添加新文件或修改已有文件,都会以提交为单位记录下来,形成历史。

我们还使用前面文章中使用的例子,当然你也可以直接从版本库中拷贝

git clone git://github.com/tswicegood/mysite-chp5.git

image

1.查看git日志

查看提交日志是查看版本库历史记录最常用的方法,git可以显示提交的日志项,包括是谁,何时做的提交,以及本次提交的具体代码大改动等信息。

进入工作目录树

git log

image

如果日志输出超过单屏大小,git则会显示部分输出结果,你可以上下滚动浏览日志。屏幕底部出现冒号“:”,表示还有更多信息等待。

在不带参数的git log命令的输出中,每个提交有4部分信息:提交名称,提交人,提交日期,提交留言,前三项内容在前三行显示,第四项内容可能显示多行,接着是下一个提交信息。

在git log命令后添加-p选项,git可以显示版本之间的代码差异。

git log -p

image

git log命令后输出参数-1,只显示一条提交日志,输入参数-2显示两条,以此类推。

也可以给git log命令传递一个指定的版本,并以此作为查看日志的起始点:

git log 7b1558c

image

注意上面例子中使用的是提交的名称缩写,即40为提交名称的前7位字符。

2.指定查找范围

git提供了若干有效的方法来指定查找范围,例如只想查看最近5小时内的提交,可以在git log命令后添加–since=”5 hours”:

git log  –since=”5 hours”

同样,也可以通过添加–before=”5 hours” -1来查看5小时之前的最后一个提交:

git log –before=”5 hours” –1

since和before参数接受大多数英文格式日期,git工具本身能够识别诸如–since=”30 hours”,–since=”1 minute”,–before=”2011-10.02″这样格式的日期,哪怕日期中间既有连字符也有句点。

也可以指定两个版本,用“最老版本..最新版本”这种格式作为查找范围,最老版本在前,最新版本在后:

git log 18f822e..0bb3dfb

image

在git世界里,输入的版本范围的含义是12f822e之后的提交开始显示日志(不包括起点,只包括终点)。

设定版本及版本范围时,HEAD代表版本库里当前分支末梢的最新版本,例如:

git log 18f822e..HEAD

image

也可以不输入HEAD参数,因为git假定“..”后面省略的值为HEAD。

当指定查找范围时,也可以用标签名称替换提交名称,这对于查看某一特定标签之后的修改,以及查看某两个标签之间的历史都是有用的;

git log –pretty=format:”%h %s” 1.0..HEAD

image

这次在git log命令后添加了参数–pretty,format:”%h %s”告诉git显示提交名称的缩写,以及提交留言的第一行,及标题。

另一个更常见的用法–pretty=oneline,但是这个输出格式太宽了。在git log的命令手册中还列出了各种各样的格式可供参考。可以输入如下命令参考

git help log

image

如果指定了范围git log命令没有输出任何结果,则需要检查输入范围是否有效。

令一种指定版本的常见方法是指出它和另一版本的关系,此时有两种操作符可供使用:

^:一个脱字号相当于回溯一个版本。18f822e^是指18f822e之前的那个版本。18f822e^^是指18f822e之前版本的之前版本,以此类推。在windows系统下,如果版本中带有脱字号,则版本须添加双引号。

*~N:波浪字符加数字的操作浮是指回溯N个版本,18f822e~1是指18f822e的父节点,18f822e是指其祖父节点。

可以混合使用这两种操作符,一下三种命令输出一样:

git log –1 HEAD^^^

git log –1 HEAD^~2

git log –1 HEAD~3

也可以在早前提到的查找范围里使用带有脱字号或波浪字符的命令,如下所示:

git log HEAD~10..HEAD

image

如上所示,当指定的版本不存在时,会得到未知版本的报错信息。