git log 命令详解

git log 命令用于查看提交历史:

git log [options] [<file> <commit> <tag>...]

如果不加其它选项,默认情况下,这个命令按提交的先后顺序由近到远显示提交日志,包括每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明等信息。

如果加文件名作为参数,那么就会只查看跟某个文件有关的提交历史;
如果指定某次提交的校验和或者标签名作为参数,那么就会查看指定提交或标签之前的提交历史。

这个命令有很多选项,常用的如下:

选项 作用说明
-n(n 为一个整数) 指定显示最近的 n 次提交
-p 或 --patch 显示每次提交所引入的差异
–name-only 仅在提交信息后显示已修改的文件清单
–name-status 显示新增、修改、删除的文件清单
–stat 显示每次提交的简略统计信息
–graph 使用 ASCII 字符形象的展示分支、合并历史等
–abbrev-commit 仅显示 SHA-1 校验和所有 40 个字符中的前几个字符
–relative-date 使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)
–pretty= 使用指定格式显示历史提交信息,常用的选项包括 oneline、short、full、fuller 或 format(用来定义自己的格式)
–oneline –pretty=oneline --abbrev-commit 合用的简写
–no-merges 不显示合并提交
–since, --after 仅显示指定时间之后的提交
–until, --before 仅显示指定时间之前的提交
<since>…<until> 查看某两次提交之间的提交历史或两个分支之间的提交的区别
<branch_1>…<branch_2> 查看在分支1上或在分支2上的提交历史
–author 仅显示作者匹配指定字符串的提交
–committer 仅显示提交者匹配指定字符串的提交
–grep 仅显示提交说明中包含指定字符串的提交
-S 仅显示添加或删除内容匹配指定字符串的提交

例如:

(1)只查看最近的 3 次提交:

git log -3
或:
git log -n 3

(2)如果想要查看每次提交的文件增删数量,使用 --stat 选项:

git log --stat

(3)如果想要查看每次提交中文件的详细修改内容,使用 -p 选项:

git log -p

(4)如果嫌输出信息太多,可以加一个 --oneline 参数:

git log --oneline
相当于:
git log --pretty=oneline --abbrev-commit

这样每次提交的信息就会在一行当中显示,大大简化输出。

(5)合并分支的时候经常产生合并提交,这些合并提交可能对我们查看过去工作并无用处,但会让提交历史变得很长,可以使用 --no-merges 选项在查看提交历史使去掉合并提交:

git log --no-merges

当然也可以特别关注这些合并提交,使用 --merges 选项查看合并到当前分支的合并提交历史:

git log --merges

(6)只显示 2 周以来的提交:

git log --since='2 weeks'

(7)只查看标签 v1.0 之前的提交历史:

git log v1.0

(8)查看标签 v1.0 之后的提交历史:

git log v1.0..

(9)查看某两次提交之间的提交历史:

git log v1.0..v2.0

这个命令查看 v1.0 和 v2.0 之间的提交,但不包括 v1.0,注意 v1.0 和 v2.0 之间用两个点(…)连接。

(10)查看在 feature 分支,但不在 master 分支的提交:

git log master..feature

(11)只查看跟某个文件有关的提交历史:

git log -- test.txt

-- 告诉 Git 后面的参数是文件名,而不是分支名,当要指定文件名作为参数时,一般要放在命令的最后。

自定义显示格式

使用 git log --pretty=format:<string> 命令自定义提交历史的显示格式,<string> 一般是一些格式占位符,表明要显示的内容,常用格式占位符写法如下:

选项 作用说明
%H 提交的完整哈希值
%h 提交的简写哈希值
%T 树的完整哈希值
%t 树的简写哈希值
%P 父提交的完整哈希值
%p 父提交的简写哈希值
%an 作者名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date=选项 来定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期(距今多长时间)
%s 提交说明

例如,想要在查看提交时,显示提交的简写哈希值、作者名字、提交时间和提交说明,可以这样写:

git log --pretty=format:"%h %an %cd %s"

也可以在 <string> 中加入直接显示的普通字符,例如:

git log --pretty=format:"%h-%an %cd : %s"

这个命令会在哈希值和作者名字之间加一个短横线,在提交说明前面加一个冒号。

自定义颜色和字体属性

在自定义提交历史的显示格式的时候也可以自定义显示的颜色和字体属性,例如:

--pretty=format:"%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset"

在这个命令中,%C 后面跟一个表示颜色的单词用来设置后面内容的显示颜色,如 %Cred%h 表示使用红色显示提交的简写哈希值,%Cgreen(%cd) 表示使用绿色显示提交的时间,常用颜色有:reset(默认灰色),normal,black,red,green,yellow,blue,white。

也可以在 %C 后面同时设置字体和颜色,此时需要将字体和颜色用括号括起来,如 %C(bold blue)<%an> 表示使用蓝色显示作者名字,同时加粗,常用字体属性有:bold(加粗),dim(淡化), ul(下划线), blink, reverse(选中)。当然,也可以只设置字体属性。

自定义时间格式

当自定义显示格式里面使用 %ad%cd 显示提交时间的时候,可以使用 --date=选项 指定日期的显示格式。

常用选项有:

选项 作用说明
relative 只显示相对于现在时间的天数,如 “2 weeks ago”
local 显示在当前时区下的时间
short 只显示日期,以 “YYYY-MM-DD” 的形式
raw 以 “%s %z” 格式显示时间,%s 指自1970-01-01 00:00:00 以来的秒数,%z 指时区
default 显示原始时区下的时间

也可以使用 --date=format:<string> 自定义时间的显示格式。比如 --date=format:"%Y-%m-%d %H:%M:%S",常用的格式占位符有:

选项 作用说明
%A 星期的英文全称
%a 星期的英文简写
%B 月份的英文全称
%b 月份的英文简写
%Y 年份全写,如 2022
%y 年份简写,如 22
%M 分钟,00-59
%m 月份,00-12
%d 日期,00-31
%H 小时,00-23
%I 小时,00-12
%S 秒,00-59
%s 自1970-01-01 00:00:00 以来的秒数
%z 时区
%W 一年中的第几周,以周一为一周的开始
%w 一周中的第几天,0-6,周日是 0
%U 一年中的第几周,以周日为一周的开始
%% 输出一个百分号

git log 有关别名设置举例

git config --global alias.lg "log --no-merges --color --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'"
git config --global alias.lgm "log --color --graph --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'"
git config --global alias.lgs "log --no-merges --color --stat --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'"

参考

git log 命令详解相关推荐

  1. 运维之道 | Git log 命令详解

    Git log 命令详解 Git log 可以让我们查看提交commit history [root@localhost villian]# git log commit 7a690b414f87fb ...

  2. Git(7)-- 查看提交历史(git log 命令详解)

    文章目录 1.`git clone` 2.`git log` 3.`git log -p` 4.`git log --stat` 5.`git log --pretty=oneline` 6.`git ...

  3. Git 常用命令详解

    Git 常用命令详解 1. Git 常用命令 1.1 常用git 命令图表汇总 1.2 配置个人信息 1.3 创建版本库 1.4 常用Git命令汇总 2. Git 解决代码冲突 3. Git 分支管理 ...

  4. git reset 命令详解 git revert命令详解。

    git reset 命令详解 reset命令 介绍 参数 补救 git revert命令 revert说明 举例: 命令 reset命令 介绍 git reset 命令格式为: git reset [ ...

  5. git checkout 命令详解—— Git 学习笔记 16

    git checkout 命令详解 概览 git checkout 这条命令的常用格式如下: 用法一 git checkout [<commit>] [--] <paths> ...

  6. git reset 命令详解(二)—— Git 学习笔记 08

    git reset 命令详解(二) 上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法--后面跟一个路径(或文 ...

  7. git reset 命令详解(一)—— Git 学习笔记 07

    git reset 命令详解(一) 简而言之,git reset 命令是用来将当前 branch 重置到另外一个 commit 的,这个动作可能同时影响到 index 以及 work director ...

  8. git diff命令详解

    git diff命令详解 diff里面a表示前面那个变量,b表示第二个变量 HEAD     commit版本 Index     staged版本 a.查看尚未暂存的文件更新了哪些部分,不加参数直接 ...

  9. Git stash命令详解和使用

    Git stash命令详解和使用 stash的原理: 将本地没提交的内容(git commit的内容不会被缓存 但git add的内容会被缓存)进行缓存并从当前分支移除,缓存的数据结构为堆栈,先进后出 ...

最新文章

  1. HttpClient 连接池设置引发的一次雪崩!
  2. 第十五届全国大学生智能汽车竞赛全国总决赛提交技术报告通知
  3. 数据挖掘流程(六):写报告
  4. DEBUG日记:同样的代码在不同的环境却得出不同的结果。
  5. OpenCASCADE:扩展数据交换(XDE)的简介
  6. BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛
  7. b样条和三次样条_样条曲线
  8. 工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat
  9. Leetcode 124.二叉树中的最大路径和
  10. PyCharm快捷键总结
  11. void android.os.Bundle.putBoolean(java.lang.String
  12. 归并排序java版_归并排序Java实现
  13. 即时通讯开发资料分享
  14. 计算机视觉基础教程笔记索引
  15. 数字电路基础与Quartus-II入门之——D触发器
  16. Java多线程并发笔记01 对象锁 类锁 对象锁的同步和异步 脏读
  17. CANOpen协议详解(一):CANfestival源码分析
  18. 国空三区三线思考之:Arcgis自上而下从左到右进行编号
  19. 每天学一个 Linux 命令:dnf
  20. 欧空局(esa)下载哨兵-Sentinel影像-(史上最全讲解,老少皆宜)

热门文章

  1. 常见电子面试知识(2/4)
  2. Java中的日志级别
  3. 讲给后台程序员看的前端系列教程(52)——Bootstrap轮播图
  4. 学生获得IDEA注册码步骤
  5. 群控源码云控安卓PC服务器三端最新源码
  6. 信号重采样 matlab,信号的重采样
  7. Python-数据库游标对象详解
  8. 牛顿法、拟牛顿法原理
  9. Android小项目———— 冰炭不投de小计算器
  10. C# dll ushort*的处理方法