git log命令

git log命令用于显示提交日志信息。

使用语法

git log [<options>] [<revision range>] [[\--] <path>…]

描述

git log命令用于显示提交日志信息。

该命令采用适用于git rev-list命令的选项来控制显示的内容以及如何以及适用于git diff- *命令的选项,以控制如何更改每个提交引入的内容。

示例

以下是一些示例 -

1.显示整个提交历史记录,但跳过合并

$ git log --no-merges
commit c5f8a258babf5eec54edc794ff980d8340396592
Author: maxsu <your_email@mail.com>
Date:   Wed Jul 12 22:07:59 2017 +0800

    commit a new file: newfile.txt
... ...

2.显示自v2.6.12版以来所有提交更改include/scsidrivers/scsi子目录中的任何文件的所有提交

$ git log master include/scsi drivers/scsi

3.显示最近两周的更改文件gitk。 “--”是必要的,以避免与名为gitk的分支混淆

$ git log --since="2 weeks ago" -- gitk

4.显示“test”分支中尚未在“release”分支中的提交,以及每个提交修改的路径列表

$ git log --name-status release..test

5.显示更改builtin/rev-list.c的提交,包括在文件被赋予其现有名称之前发生的提交。

$ git log --follow builtin/rev-list.c

6.显示在任何本地分支中的所有提交,但不包括任何远程跟踪分支机构的起始点(origin不具有)。

git log --branches --not --remotes=origin

7.显示本地主服务器中的所有提交,但不显示任何远程存储库主分支。

git log master --not --remotes=*/master

8.显示历史,包括变化差异,但仅从“主分支”的角度来看,忽略来自合并分支的提交,并显示合并引入的变化的完全差异。只有当遵守在一个整合分支上合并所有主题分支的严格策略时,这才有意义。

git log -p -m --first-parent

9.显示文件main.c中的函数main()随着时间的推移而演变。

git log -L '/int main/',/^}/:main.c

10.将显示最近三次的提交。

git log -3

11.根据提交ID查询日志

$ git log commit_id    #查询ID(如:6bab70a08afdbf3f7faffaff9f5252a2e4e2d552)之前的记录,包含commit
$ git log commit1_id commit2_id #查询commit1与commit2之间的记录,包括commit1和commit2
$ git log commit1_id..commit2_id #同上,但是不包括commit1

其中,commit_id可以是提交哈希值的简写模式,也可以使用HEAD代替。HEAD代表最后一次提交,HEAD^为最后一个提交的父提交,等同于HEAD~1HEAD~2代表倒数第二次提交
--pretty按指定格式显示日志信息,可选项有:oneline,short,medium,full,fuller,email,raw以及format:,默认为medium,可以通过修改配置文件来指定默认的方式。

$ git log (--pretty=)oneline

常见的format选项:

#选项     #说明
%H      提交对象(commit)的完整哈希字串
%h      提交对象的简短哈希字串
%T      树对象(tree)的完整哈希字串
%t      树对象的简短哈希字串
%P      父对象(parent)的完整哈希字串
%p      父对象的简短哈希字串
%an     作者(author)的名字
%ae     作者的电子邮件地址
%ad     作者修订日期(可以用 -date= 选项定制格式)
%ar     作者修订日期,按多久以前的方式显示
%cn     提交者(committer)的名字
%ce     提交者的电子邮件地址
%cd     提交日期
%cr     提交日期,按多久以前的方式显示
%s      提交说明

注:作者是指最后一次修改文件的人;而提交者是指提交该文件的人。

$ git log --pretty=format:"%an %ae %ad %cn %ce %cd %cr %s" --graph

--mergs - 查看所有合并过的提交历史记录
--no-merges - 查看所有未被合并过的提交信息
--author=someonet - 查询指定作者的提交记录

$ git log --author=maxsu

--since--affter - 仅显示指定时间之后的提交(不包含当前日期)
--until--before - 仅显示指定时间之前的提交(包含当前日期)

$ git log --before={3,weeks,ago} --after={2018-04-18}

上一篇:git mergetool命令

下一篇:git stash命令

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程