查看提交历史
访问量:664

一、简介

git log命令是git里面查看提交历史的。使用方式如下:

git log

执行结果如下:

可以看出,每次提交生成的commit对象提交者提交日期以及提交时候的备注信息。通过commit对象,我们可以获取当前提交对应的tree对象

二、参数

git针对查询提交历史,还提供了下面的一些参数:


选项说明
-p
按补丁格式显示每个更新之间的差异
--word-diff按照word diff格式显示差异
--stat显示每次更新的文件修改统计信息
--shortstat只显示 --stat 中最后的行数修改添加移除统计
--name-only仅在提交信息后显示已修改的文件清单。
--name-status显示新增、修改、删除的文件清单。
--abbrev-commit仅显示 SHA-1 的前几个字符,而非所有的 40 个字符
--relative-date使用较短的相对时间显示(比如,“20 hours ago”)
--graph显示 ASCII 图形表示的分支合并历史
--pretty使指定显示历史提交信息的格式。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)
--oneline--pretty=oneline --abbrev-commit 的简化用法
--after="dateTime"
限制提交时间在dateTime之后,比如“22 hours ago”或是"2018-1-1"或是"yesterday"
--since="dateTime"--since和--after等价,用法同上
--before="dateTime"限制提交时间在dateTime之前,用法同上
--until--until和--before等价,用法同上
--author="dq"
限制查询的提交者为dq。(备注,作者名不一定是全匹配,只要包含那个子串就会匹配)
--grep="测试"
限制查询提交备注信息中包含“测试”的提交。
-n限制查询结果的数量,如 git log -3 ,显示最新3次提交。
-- file1 [file2]限制查询的文件,比如git log -- index.html page1.html,只显示 index.html page1.html的提交历史。
-S str根据源代码中某一行的增加和删除来搜索提交



二、实例

1.如何查看限定时间范围内的提交历史

比如,先查询"2018-01-26 10:0:0"到 "2018-01-26 23:0:0"之间的所有提交,命令如下:

git log --after="2018-01-26 10:0:0" --before="2018-01-26 23:0:0"

结果如下:

2.如何限制查询提交历史的返回的条数

如果我们直接使用git log,往往返回的数据量是比较大的,我们可以使用-n来限制返回的数据,比如查询最近3条提交历史,如下:

git log -2

2.如何查询每次提交改动了哪些内容

比如我先查看,最近1次提交,都改动了哪些内容,可以使用如下命令:

git log -p -1

可以看出,最近一次提交,新增了一个文件。

3.如何查询每次提交改动了哪些文件

比如,我们仅仅先查看最近三次提交,都改动了哪些文件,可以使用如下命令:

git log -3 --name-only

可以看出,最近两次提交,都改动了index.html文件,倒数第三次提交,改动了page.html和page2.html文件。如果想查看,针对文件的改动是新增、删除、还是修改,可以使用如下命令:

git log -3 --name-status


备注:A代表新增;D代表删除,M代表修改。

3.如何查询某个文件中的某一行是哪一次提交被修改的

比如index.html文件,之前里面有一行内容是“hello”,现在这行内容被删除了,怎么查询这行内容是哪次提交被修改的呢?可以使用如下命令:

git log  -p --word-diff -S "hello" -- index.html

其中,-p -word-diff是用来显示每次提交修改的内容;-S "hello" 限制改动的内容里面包含"hello"关键字; -- index.html,限制只查询index.html文件。执行结果如下:

从上图,可以看出,“hello”在inde.html文件中,是何时被添加进去的,又是何时被删除的。