查看提交历史(git log)
git log 命令
在完成了几次提交,或者克隆了一个已有提交历史的仓库后,要查看历史提交记录,可以通过git log
命令来实现。
$ git log
commit 0becea8e1966df258b7a7c12e2f8eb906148514c (HEAD -> master)
Author: velscode <velscode@gmail.com>
Date: Sat Mar 23 18:59:04 2019 +0800
first commit
默认不加参数的情况下,git log
会按照时间顺序列出仓库中的所有提交,其中最新的提交显示在最前面。和每个提交一同列出的还有它的SHA-1校验和、作者的姓名和邮箱。
选项
git log
有很多不同的选项,我们几个比较常用的
-p
:显示出每次提交所引入的差异
-1
只显示出最近的1次提交
$ git log -p -1
commit 0becea8e1966df258b7a7c12e2f8eb906148514c (HEAD -> master)
Author: velscode <velscode@gmail.com>
Date: Sat Mar 23 18:59:04 2019 +0800
first commit
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..7440538
--- /dev/null
+++ b/main.c
@@ -0,0 +1 @@
+Add a new line for main.c
\ No newline at end of file
可以看到什么文件的哪一行被修改了,这里是main.c中增加了一行“Add a new line for main.c”
--stat
:如果只想要查看摘要统计信息
$ git log -1 --stat
commit 0becea8e1966df258b7a7c12e2f8eb906148514c (HEAD -> master)
Author: velscode <velscode@gmail.com>
Date: Sat Mar 23 18:59:04 2019 +0800
first commit
main.c | 1 +
1 file changed, 1 insertion(+)
--stat
选项会在每个提交下面列出如下内容:改动的文件列表、共有多少文件被改动以及文件里有多少新增行和删除行。另外还会在最后输出总计信息。
--pretty
是另一个比较有用的选项,它可以更改日志输出的默认格式。Git有一些预置的格式可供你选择。例如,在浏览大量提交时,oneline
格式选项很有用,它可以在没一行中显示一个提交。除此之外,short
、full
、fuller
格式选项会分别比默认输出减少或增加一些信息
$ git log --pretty=oneline
0becea8e1966df258b7a7c12e2f8eb906148514c (HEAD -> master) first commit
最值得注意的选项是format
,它允许你指定自己的输出格式。这样的输出有利于机器自动解析,其结果不会随着Git软件版本更新而改变。
$ git log --pretty=format:"%h - %an , %ar : %s"
0becea8 - velscode , 2 days ago : first commit
这里列举一些有用的格式选项
格式选项 | 描述 |
---|---|
%H | 提交对象的散列值 |
%h | 提交对象的简短散列值 |
%T | 树对象的散列值 |
%t | 树对象的简短散列值 |
%P | 父对象的散列值 |
%p | 父对象的简短散列值 |
%an | 作者的名字 |
%ae | 作者的电子邮箱 |
%ad | 创作日期 |
%ar | 相对于当前日期的创作日期 |
%cn | 提交者的名字 |
%ce | 提交者的电子邮箱地址 |
%cd | 提交日期 |
%cr | 相对于当前日期的提交日期 |
%s | 提交信息的主题 |
这里提到了作者和提交者的概念,这个概念以后会再细述区别。
oneline
和format
这两个选项如果与log命令的另一个选项--graph
一起使用,就能发挥更大的作用。具体来说,--graph
选项会用ASCII字符形式的简单图标来显示Git分支和合并历史
事实上,git log
还有很多选项,这里给出一些常用的
选项 | 描述 |
---|---|
-p | 按补丁格式显示每个提交引入的更改 |
--stat | 显示每个提交中被更改的文件的统计信息 |
--shortstat | 只显示上述输出中包含“已更改/新增/删除”行的统计信息 |
--name-only | 在每个提交信息后显示被更改的文件列表 |
--name-status | 在上述输出基础上显示出“已更改/新增/删除”统计信息 |
--abbrev-commit | 只显示完整的SHA-1 40位校验和字符串中的前几个字符 |
--relative-date | 显示相对日期(例如两周前) |
--graph | 在提交历史旁边显示ASCII图标,用于展示分支和合并的历史信息 |
--pretty | 用一种可选格式显示提交 |
限制提交历史的输出范围
git log除了有输出格式的选项之外,还有一些有用的选项,它可以只显示出最近的若干条信息。不过这个选项在实际中不常用,因为默认情况下Git的所有输出会通过管道机制输入给分页程序(Pager),使得一次只显示出一页内容。
选项 | 描述 |
---|---|
-(n) | 只显示最新的n次提交 |
--since,--after | 只输出指定日期之后的提交 |
--until,--before | 只输出指定日期之前的提交 |
--author | 只输出作者与制定字符串匹配的提交 |
--committer | 只输出提交者与指定字符串匹配的提交 |
--grep | 只输出提交信息包含指定字符串的提交 |
--S | 只输出包含“添加或删除指定字符串”的更改的提交 |
最新文章
- 极光推送NotificationServiceTest.appex文件变红不存在丢失解决办法
- asp.net 之
- ContentProvider总结
- Valid Sudoku
- 根据Expander的IsExpanded属性值的变化动态设计Control的size
- 译文:Javascript-Functions
- 【转】Android.mk文件语法规范(Android.mk File)
- Linux温馨提示1--安装U板块和Windwos划分
- Vim经常使用技巧总结1
- oracle存储过程异常捕获
- MySQL字段自增自减的SQL语句
- PRINCE2考试一共多少道题
- CI框架浅析(全篇)
- Eclipse读取含有extjs的项目文件时卡死或者编写ExtJS时卡
- 初触hibernate01--MYSQL建表时type=InnoDB和Engine=InnoDB注意点
- HTML <;a href >;标签的target属性
- win7 远程连接服务器出现身份验证错误,又找不到加密Oracle修正
- JavaScript入门学习笔记(异常处理)
- JavaScript数据类型之数字类型
- python之旅5【第五篇】
热门文章
- cocos web 多端口运行
- 从Linux 与 Unix 异同,看开源世界的发展!
- Oracle硬解析,软解析,软软解析介绍
- 在Linux系统安装Nodejs 最简单步骤
- 安装WebLogic失败,出现”[VALIDATION] [ERROR]:INST-07004: Oracle 主目录(O) 位置包含一个或多个无效字符“解决方案
- DRF缓存
- 浅谈css3有意思的属性pointer-events: none;
- [题解]NOIP2018(普及组)T1标题统计(title)
- Flutter控制屏幕旋转
- HashMap源码解读(jdk1.8)