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格式选项很有用,它可以在没一行中显示一个提交。除此之外,shortfullfuller格式选项会分别比默认输出减少或增加一些信息

$ 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 提交信息的主题

这里提到了作者和提交者的概念,这个概念以后会再细述区别。


onelineformat这两个选项如果与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 只输出包含“添加或删除指定字符串”的更改的提交

查看提交历史(git log)的更多相关文章

  1. [Git]03 如何查看提交历史

     在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 gitlog 命令查看. 常用命令 1.查看提交历史 $ git log 2.查看某个文件或者某个目录的递交历史 $ gi ...

  2. 4.Git基础-查看提交历史

    1.查看提交历史 --  git log  使用 git log 可以查看到所有的提交(commit)历史. 1. $ git log 列出所有commit,最新的commit在最上面.会显示每个提交 ...

  3. git 查看提交历史

    查看提交历史 git log 查看每次提交的具体改动内容 git log -p 查看某个文件历次提交的具体改动内容 git log -p <file name> # git log -p ...

  4. git 使用详解(5)-- get log 查看提交历史【转】

    转自:http://blog.csdn.net/wh_19910525/article/details/7468549 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 限制 ...

  5. 【第八篇】- Git 查看提交历史之Spring Cloud直播商城 b2b2c电子商务技术总结

    ​ Git 查看提交历史 Git 提交历史一般常用两个命令: git log 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看. 针对 ...

  6. git log 查看提交历史

    文章出处http://blog.csdn.net/wh_19910525/article/details/7468549  git log  查看 提交历史 在提交了若干更新之后,又或者克隆了某个项目 ...

  7. git 使用详解(5)—— get log 查看提交历史

    git log 查看 提交历史 在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看. 接下来的例子会用我专门用于演示的 simplegit 项目,运行下面 ...

  8. 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 log --pret ...

  9. Git 查看提交历史(分布式版本控制系统)

    1.查看提交历史 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史.完成这个任务最简单而又有效的工具是 git log 命令. $ git log commit ca82a6dff8 ...

  10. Git 基础 - 查看提交历史

    查看提交历史 在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看. 接下来的例子会用我专门用于演示的 simplegit 项目,运行下面的命令获取该项目源 ...

随机推荐

  1. Webdriver之API详解(2)

    前言:今天继续上一篇文章https://www.cnblogs.com/linuxchao/p/linuxchao-selenium-apione.html分享selenium' webdriver ...

  2. 第二课android中activity启动模式

    一.标准启动模式可以用函数gettaskid得到任务的idtostring得到地址用textallcaps来设置是否全部大写应用启动自己是在任务栈里创建不同实例可以用返回来返回上一个任务栈在andro ...

  3. C# .NET 0配置使用Wcf(半成品)

    设计原则:万物皆对象 背景:微软提供了一套强大的通信框架Wcf,了解请看百度百科:ttps://baike.baidu.com/item/Wcf/7374854?fr=aladdin 虽然这套通信框架 ...

  4. 复习交换代数——Noether正规化

    目录 简介 初等启发 证明过程 几何意义 定理应用 参考资料 简介 在交换代数中有如下定理 Noether正规化引理 令$R$是一个有限生成$k$-代数整环,则存在$t_1,\ldots,t_n\in ...

  5. bboss oreach循环嵌套遍历map

    foreach循环嵌套遍历mapforeach嵌套dsl脚本定义 <property name="dynamicInnerDsl"> <![CDATA[{ ## ...

  6. C#中的PropertyGrid绑定对象,通过改变某一值而动态设置部分属性的特性

    问题:如下,我定义了一个对象,默认设置属性WindowSize ,WindowSize 为不可见,通过改变SaveOnClose的值,动态的改变不可见的属性的显示和隐藏. [DefaultProper ...

  7. centos7重置root密码

    修改centos7的root密码重置非常简单,只需要登录系统,执行passwd按enter即可, 但是如果忘记root密码,该如何修改呢 1, 重启系统之后,系统启动进入欢迎界面,加载内核步骤时,选中 ...

  8. mysql提取.sql备份文件中的单个表以及表数据

    背景:随着业务模块的不断在增多,数据库mysql容量也是越来越大,做测试时,整个备份还原比较耗费时间,由于有时候仅仅需要单个表或者少数几个表,要想从整个备份文件中提取指定的表以及数据,需要以下方法. ...

  9. 网站PWA升级

    前面的话 渐进式网络应用 ( Progressive Web Apps ),即我们所熟知的 PWA,是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一系列方案.PWA 本 ...

  10. Vue接口异常时处理

    一般接口只会对后台返回的json状态进行判断处理,当后台异常时,我们可以使用catch来对这些异常进行同样的报错处理. 例如: 上面显示代码例子中test为一个接口,json为后台正常返回的数据对象, ...