git log

本文介绍如何使用Git的--pretty选项来定制提交历史的显示格式,包括使用特定的占位符来展示提交信息,并提供了一个定制化的log别名示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git-定制属于你的log格式

软件版本:
 
    操作系统:ubuntu10.04
      内核版本:Linux version 2.6.32-36-generic
      git 版本:git version 1.7.0.4

1. 查看提交历史

      命令:gitlog

2. 选项 --pretty[=<format>]
1)介绍
      除了默认格式查看提交历史以外,还可以通过--pretty[=<format>] 或者--format[=<format>]制定输出格式。<format> 可以是 noeline, short,medium, full, fuller, email, raw, format: 中的一个,他们各自的输出格式可以参考 gitlog --help 或者 (3)。接下来我们主要是讨论 format: 的使用方法。

2)定制提交格式 --pretty=format:
   --pretty=format:"format" 的用法就想 printf 的用法一样,只是换行从 \n 变为 %n。下面列出一些常用的占位符,分别来自于 (1) (2) ,更详细请参考 (3)或者 gitlog --help
选项       说明


%H        提交对象(commit)的完整哈希字串


%h        提交对象的简短哈希字串


%T        树对象(tree)的完整哈希字串


%t         树对象的简短哈希字串


%P         父对象(parent)的完整哈希字串


%p         父对象的简短哈希字串


%an  作者(author)的名字


%_ae  作者的电子邮件地址
(由于新浪博客显示问题,请去除 %_ae 中的 _ )
%_ad  作者修订日期(可以用 -date= 选项定制格式)(由于新浪博客显示问题,请去除 % ad 中的 _ )
%ar        作者修订日期,按多久以前的方式显示


%cn        提交者(committer)的名字


%_ce 提交者的电子邮件地址(由于新浪博客显示问题,请去除 %_ce 中的 _ )
%_cd  提交日期
(由于新浪博客显示问题,请去除 %_cd 中的 _ )
%cr        提交日期,按多久以前的方式显示

%d:  ref名称

%s:  提交的信息标题

%b:  提交的信息内容

%Cred: 切换到红色


%Cgreen: 切换到绿色


%_Cblue: 切换到蓝色
(由于新浪博客显示问题,请去除 %_Cblue 中的 _)

%Creset: 重设颜色


%C(...): 制定颜色, as described in color.branch.* config option


%n:  换行



    
注意:作者(author)_和_提交者(committer)_之间究竟有何差别,其实作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交
到仓库的人。所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是作者,而那个核心成员就是提交者。引用来自(1)

    例如,我们只需要输出完成的哈希值以及提交的信息标题,就可以使用命令:



$git log --pretty=format:"%H %n %s"



38896a27dc8ab4f47883bd67d300f6145f0478b7 

 commit write 2

7d3e94cf22b17f7d097479ae8d9367e42509bb3f 

 Initial commit



3)定制专属于你的 log 格式

    根据上面的说明,我们可以定制属于自己 log 格式:



$git config --global alias.lg "log --graph 
--pretty=format:'%Cred%H%Creset @%C(yellow)%d%Creset %n Author: %cn 
<%_ce> %n Date: %_cd %_Cblue(%cr)%Creset %n %n Commit subject: 
%Cgreen%s%Creset %n'"

    注:命令中 %_ce、%_cd、%_Cblue 分别去除其下划线 _ 。

$git lg



* 38896a27dc8ab4f47883bd67d300f6145f0478b7 @ (HEAD, master) 

|  Author: Eddy <xxx@xxx.com> 

 Date: Thu Feb 2 17:06:06 2012 +0800 (8 days ago) 

 

|  Commit subject: commit write 2 

 

* 7d3e94cf22b17f7d097479ae8d9367e42509bb3f @ 

   Author: Eddy <xxx@xxx.com> 

   Date: Thu Feb 2 17:05:00 2012 +0800 (8 days ago) 

   

   Commit subject: Initial commit 



4)其它选项

    git log 支持的选项有很多,详细请参考 git log --help ,常用的有(引用(1)中的表2-2):


选项   说明


-p     按补丁格式显示每个更新之间的差异。


--stat 显示每次更新的文件修改统计信息。


--shortstat 只显示 --stat 中最后的行数修改添加移除统计。


--name-only 仅在提交信息后显示已修改的文件清单。


--name-status 显示新增、修改、删除的文件清单。


--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。


--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。


--graph 显示 ASCII 图形表示的分支合并历史。


--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。


参考资料:
(1) http://progit.org/book/zh/ch2-3.html
(2) http://ruby-china.org/topics/939
(3) http://linux.die.net/man/1/git-show



<think>好的,用户让我介绍一下Git log。首先,我需要确定用户对Git的基础知识了解多少。可能用户已经知道基本的版本控制概念,但需要更深入了解如何查看提交历史。 接下来,我应该回顾Git log的基本功能,它用于查看项目的提交历史。用户可能想知道常用的选项和参数,比如如何简化输出、查看差异,或者按时间、作者过滤提交记录。需要分步骤介绍,让用户能够逐步掌握。 然后,考虑用户可能遇到的常见问题,比如日志太多难以阅读,或者需要查找特定提交。这时候,介绍一些常用的选项,比如--oneline、--graph、--since等,会有帮助。同时,示例很重要,用户可以通过实际的命令和输出来更好地理解。 还要注意格式问题,用户提到的系统级指令中,要求数学表达式用$...$,但这里可能不太涉及数学内容,所以可能不需要用到。不过要确保中文回答,结构清晰,步骤明确。 另外,用户可能需要知道如何自定义输出格式,比如使用--pretty=format来自定义显示的提交信息,这对定制化需求很有用。还有,如何查看文件的修改历史,比如使用git log <file>,这也是常见的使用场景。 需要检查是否有遗漏的重要选项,比如查看分支合并情况的--graph,或者如何限制显示的提交数量,比如-2。同时,提醒用户可以通过组合不同的选项来达到更精确的查找,比如同时使用--since和--author。 最后,确保语言简洁明了,避免技术术语过多,让不同水平的用户都能理解。可能需要总结常用命令,方便用户快速查阅。还要确认所有命令示例正确,符合LaTeX格式要求,但在这个上下文中可能不需要数学表达式,所以主要关注代码块的正确格式。</think>Git logGit 版本控制系统中用于查看提交历史的命令。通过逐步掌握以下内容,你可以有效追踪项目变更: 一、基础用法 1. 输入 `git log` 会显示完整提交历史 ```bash commit 3a7b8c1d (HEAD -> main) Author: 张三 <zhangsan@example.com> Date: Mon Jan 1 12:00:00 2023 +0800 添加用户登录功能 commit 5d2f4e9a Author: 李四 <lisi@example.com> Date: Sun Dec 31 09:30:00 2022 +0800 初始化项目结构 ``` 二、常用参数(组合使用效果更佳) 1. 精简显示:`git log --oneline` $$3a7b8c1 (HEAD -> main) 添加用户登录功能$$ $$5d2f4e9 初始化项目结构$$ 2. 图形化分支:`git log --graph --decorate` ```bash * commit 3a7b8c1 (main) | Author: 张三 | 添加登录功能 | * commit 5d2f4e9 初始化项目 ``` 3. 过滤提交 - 时间范围:`git log --since="2023-01-01" --until="2023-01-31"` - 按作者:`git log --author="张三"` - 按关键词:`git log -S "login"`(搜索包含"login"的修改) 三、高级应用 1. 查看文件历史:`git log README.md`(追踪特定文件变更) 2. 显示修改内容:`git log -p`(附带代码差异对比) 3. 自定义格式: ```bash git log --pretty=format:"%h | %an | %ad | %s" ``` 输出示例: $$3a7b8c1 | 张三 | Mon Jan 1 12:00:00 2023 +0800 | 添加用户登录功能$$ 四、实用技巧 1. 限制显示数量:`git log -2`(仅显示最新2条记录) 2. 时间线筛选:`git log --after="2 weeks ago"` 3. 组合命令:`git log --oneline --graph --all`(查看全部分支关系) 建议通过 `git help log` 查看完整文档。实际使用时,建议将常用参数设为别名: ```bash git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'" ``` 之后通过 `git lg` 即可获得彩色可视化日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值