Git 系列 3:如何使用日志命令助力你的工作?

2020-06-19  本文已影响0人  暗星涌动

@[TOC]

一、引言

在本系列的第一篇文章Git 系列 1:提交修改到远程仓库——详尽版的【八、查看提交记录】中,我们提到了关于查看日志的知识,今天,我们再来详细的了解以下日志查看的相关命令。

二、查看日志

2.1 查看所有记录

2.1.1 显示所有提交过的版本信息

通过 git log 命令可以查看至今为止的所有的提交记录。

git log

运行结果如下:


在这里插入图片描述

可以看到,界面中显示了不少的commit 记录。以第一条记录为例,每个commit 记录都包含了sha-1 值,作者(Author ),修改日期(Date ),提交信息(add C )等信息。
输入此命令时,命令行界面只列举了最近的几次提交,而并不会一次性将所有的commit 记录都列举出来。
操作方法:

2.1.2 查看所有分支的所有操作记录

通过命令 git reflog 可以查看项目中所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)。

git reflog 

运行结果如下:


在这里插入图片描述

可以看到,界面中显示了不少操作记录。以第一条记录为例,每条记录都包含了sha-1 值,标识( (newB )HEAD{1} ),操作(merge ),提交信息(Merge made by .. )等信息。

2.1.3 log 与reflog 比较

同:

异:

2.1.4 查看详细的提交记录

通过 git log -p 命令可以查看更为详细的提交记录。

 git log -p

运行结果如下:


在这里插入图片描述

可以看到,与前两个命令相比,这次的输出多了每次提交记录的文件变化等信息。

2.1.5 查看每次提交的简略统计信息

通过 git log --stat 命令可以查看每次提交的简略统计信息。

 git log --stat

运行结果如下:


在这里插入图片描述

可以看到,与git log -p 命令相比,此次的命令输出结果更为直观,并且增加了统计信息。

2.2 查看部分记录

2.2.1 查看最近几条记录

通过 git log -p -n 命令可以支查看最近的几条提交记录。
例如,我想只查看最近的两次提交,只需要输入以下命令:

git log -p -2
运行结果如下: 在这里插入图片描述

可以看到,界面中只输出了最近的两次提交。

2.2.2 指定文件名

通过gti log fileName 可以只查看与指定文件相关的提交记录。
例如,我想只查看关于C.txt 的提交记录,只需要输入以下命令:

git log C.txt

运行结果如下:


在这里插入图片描述

可以看到,界面中输出的都是与C.txt 相关的提交。
同理,我们也可以只查看与指定目录相关的提交记录。而这,只需要将文件名改为目录名即可。

git log AA/

2.2.3 指定标签之前

通过git log tagName 命令可以查看在打标签位置之前的提交记录。
例如,我想查看标签show 前面的提交记录,只需要输入以下命令:

git log show

运行结果如下:

在这里插入图片描述

可以看到,界面中只输出了标签show 及其之前的提交记录。

2.2.4 指定分支

通过 git log branch1..branch2 可以查看branch2 分支历史提交记录,但是不包含branch1 分支历史记录。
例如,我想查看master 分支的提交记录,不想查看xi 分支的提交记录,只需要输入以下命令

git log xi..master

运行结果如下:


在这里插入图片描述

通过 git log branch1...branch2 可以查看branch2 和branch1 的分支历史记录。
例如,我想查看master 和xi 分支的提交记录,只需要输入以下命令:

git log xi...master

运行结果如下:


在这里插入图片描述

可以看到,这次的输出比上次多了提交信息为 add r 的提交,这是xi 分支上的提交记录。

2.2.5 指定commit

通过 git log commit 可以查看指定提交之前的提交记录。
例如,我想查看提交d0aba9 之前的提交记录,只需要输入以下命令:

git log d0aba9 

运行结果如下:


在这里插入图片描述

可以看到,在d0aba9 之后的提交并没有被输出。
通过 git log commit...commit2 可以查看commit1 与commit2之 间的历史提交记录(不包含commit2 )。
例如,我想查看提交d0aba9 和56ce24 之间的提交记录,只需要输入以下命令:

git log d0aba9...56ce24

运行结果如下:


在这里插入图片描述

可以看到,界面中只输出了d0aba9 和le569a 的提交记录,并没有56ce24 的提交记录。

2.3 形象化输出

通过 git log --graph 命令可以更加形象的展示项目的分支,提交历史。

git log --graph

这里,借用别人的图片作为展示:


在这里插入图片描述

可以看到,输出中增加了一些 ASCII 字符串来形象地展示项目的分支、合并历史。

2.4 格式化输出

2.4.1 单行展示

通过git log --pretty=oneline 命令可以将每个提交放在一行显示,在浏览大量的提交时非常有用。

git log --pretty=oneline

运行结果如下:


在这里插入图片描述

可以看到,每个提交都只有一行的空间进行展示了。
另外,还有 short,full ,fuller,medium 等 选项,它们展示信息的格式基本一致,但是详尽程度不一:


在这里插入图片描述

2.4.2 自定义格式

通过 git log --pretty=format 命令可以自定义输出格式。

git log --pretty=format:'%h was %an, %ar, message: %s'

运行结果如下:


在这里插入图片描述

format参数值:

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

2.4.3 排序输出

通过git log --date-order 命令可以使提交记录按时间顺序输出。

git log --pretty=format:'%h : %cd : %s' --date-order 

运行结果如下:


在这里插入图片描述

通过git log --topo-order 命令可以使提交记录按拓朴顺序输出。

`git log --pretty=format:'%h : %cd : %s' --topo-order

2.5 按照日期查看提交记录

2.5.1 指定时间之前

通过git log --before 命令可以查看在指定日期之前(包含该日期 )的提交记录。
例如,我想查看不是今天(20200507)提交的记录,只需要输入以下命令:

git log --before="20120-5-6" --pretty=format:'%h : %cd : %s'

运行结果如下:


在这里插入图片描述

可以看到,输出中,并没有今天的提交记录。
至于为什么没有昨天的提交记录,明明昨天有做提交啊?那是因为git log 命令只查询当前分支的记录。昨天是在master 分支上进行操作,而今天我们主要是在 xi 分支上进行操作( 前面有一步运行前我切换分支了 )。
另外,我们也可以用--until 代替--before ,两者功能是一样的。

2.5.2 指定时间之后

通过git log --after 命令可以查看在指定日期之后(包含该日期 )的提交记录。
例如,我想查看今年4月30号之后的提交记录,只需要输入以下命令:

git log --after="20120-4-30" --pretty=format:'%h : %cd : %s'

运行结果如下:


在这里插入图片描述

可以看到,输出中只有4月30号及之后的提交记录。
另外,我们也可以用--since 代替--after,两者功能是一样的。

2.6 按照提交信息查看提交记录

通过git log --grep 命令可以查看模糊匹配指定提交信息的提交记录。
例如,我想查找提交信息中包含" add "的提交记录,只需要输入以下命令:

git log --pretty=oneline --grep="add" 

运行结果如下:


在这里插入图片描述

可以看到,在输出中,每条记录的提交信息都包含 add 字符串。

2.7 按照作者或邮箱查看提交记录

通过git log --author 命令可以查看指定作者的提交记录。
例如,我想查看作者为anxinghei 的提交记录,只需要输入以下命令:

git log --pretty=oneline --author="anxinghei"

运行结果如下:

在这里插入图片描述
特别说明:如果同时使用--grep 和--author 筛选,需要附加--all-match 参数。

2.8 按照文件内容查看提交记录

通过 git log -S 命令可以查看内容中含有指定信息的文件所在的提交。
例如,我想查找内容包含“A ”的文件所在的提交记录,只需要输入以下命令:

git log -S "A"

运行结果如下:


在这里插入图片描述

如果想使用正则表达式去匹配而不是字符串,那么你可以使用-G 代替-S 。

三、总结

总结:今天,我们主要学习了如何根据某些条件来查找日志。用到的命令有

  1. 查看所有分支的所有操作
git reflog 
  1. 查看当前分支的提交
git log
  1. 查看的提交的信息较为详细
git log -p 
  1. 查看的提交拥有统计信息
git log --stat
  1. 单行展示
git log --pretty=oneline 
  1. 格式化输出
git log --pretty=format 
  1. 按照日期查找提交记录
git log --before/after
  1. 查找提交信息模糊匹配对应信息的提交
git log --grep 
  1. 查找对应作者的提交
git log --author 
  1. 查找被提交文件中拥有指定内容的提交
git log -S 

至此,本文结束。我是陈冰安,一个Java学习者。欢迎关注我的公众号【暗星涌动】,愿与你一同进步。

上一篇下一篇

猜你喜欢

热点阅读