一、简介
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文件中,是何时被添加进去的,又是何时被删除的。
若您感觉本站文章不错,读后有收获,不妨赞助一下?
我要赞助