查看提交历史(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 | 只输出包含“添加或删除指定字符串”的更改的提交 |
查看提交历史(git log)的更多相关文章
- [Git]03 如何查看提交历史
在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 gitlog 命令查看. 常用命令 1.查看提交历史 $ git log 2.查看某个文件或者某个目录的递交历史 $ gi ...
- 4.Git基础-查看提交历史
1.查看提交历史 -- git log 使用 git log 可以查看到所有的提交(commit)历史. 1. $ git log 列出所有commit,最新的commit在最上面.会显示每个提交 ...
- git 查看提交历史
查看提交历史 git log 查看每次提交的具体改动内容 git log -p 查看某个文件历次提交的具体改动内容 git log -p <file name> # git log -p ...
- git 使用详解(5)-- get log 查看提交历史【转】
转自:http://blog.csdn.net/wh_19910525/article/details/7468549 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 限制 ...
- 【第八篇】- Git 查看提交历史之Spring Cloud直播商城 b2b2c电子商务技术总结
Git 查看提交历史 Git 提交历史一般常用两个命令: git log 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看. 针对 ...
- git log 查看提交历史
文章出处http://blog.csdn.net/wh_19910525/article/details/7468549 git log 查看 提交历史 在提交了若干更新之后,又或者克隆了某个项目 ...
- git 使用详解(5)—— get log 查看提交历史
git log 查看 提交历史 在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看. 接下来的例子会用我专门用于演示的 simplegit 项目,运行下面 ...
- 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 ...
- Git 查看提交历史(分布式版本控制系统)
1.查看提交历史 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史.完成这个任务最简单而又有效的工具是 git log 命令. $ git log commit ca82a6dff8 ...
- Git 基础 - 查看提交历史
查看提交历史 在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看. 接下来的例子会用我专门用于演示的 simplegit 项目,运行下面的命令获取该项目源 ...
随机推荐
- RubyGems系列之RubyGems初识
转载请标明来源:https://www.cnblogs.com/zhanggui/p/9719291.html 一. 基础理解 RubyGems简称gems,它是一个用于对Ruby组件进行打包的Rub ...
- Java8-2-Lambda表达式实战-一句话实现Map中按照Value排序
在上一讲中, 我们着重的讲了表达式的一些基础知识和基本的使用, 今天我们来实战一把, 对Map的Value值排序进行简化. 在以前的思路我们的做法如下: /** * * Map根据value排序; * ...
- 揽货最短路径解决方案算法 - V2(增加了时间维度-客户允许的服务时间段,C#/JAVA同步实现,带python作图)
继上篇,这里改进增加了客户允许服务的时间范围这个维度,并且把C#版本翻译成java,加强了更加形象的图表展示路径(继续是用python的matplotlib作图). 这里的时间范围维度是指:每个客户都 ...
- Photoshop给草坡上的人物加上大气的霞光
<点小图查看大图> 最终效果 1.打开原图素材大图,创建可选颜色调整图层,对红色.黄色.黑色进行调整,参数设置如图1 - 3,效果如图4.这一步减少图片中的红色,并给暗部增加蓝色. < ...
- Hive基础知识
一.产生背景 1.MapReudce编程繁琐,需要编写大量的代码 2.HDFS中存放的都是文件,在HDFS中没有Scheme的概念,无法用SQL进行快速的查询. 二.Hive的概念 Hive是基于Ha ...
- 二 Array 数组常用操作方法
数组链接 Array 构造上的方法 一.Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable) ...
- LODOP获取打印成功,是否加入队列
之前博文介绍过获取打印机状态码 LODOP获取打印机状态码和状态码含义测试,但是打印机种类千差万别,状态码不一定准确,特别是打印成功的状态码,获取任务不在队列,可以判断打印成功,删除任务也是任务不在队 ...
- js 替换所有指定的字符串
js 的replace方法只替换第一个匹配到的的字符 如果要全局替换,使用以下方法(g为全局标志) str.replace(/需要替换的字符串/g,"新字符串") //如果有特殊符 ...
- 洛谷P3469[POI2008]BLO-Blockade
题目 割点模板题. 可以将图中的所有点分成两部分,一部分是去掉之后不影响图的连通性的点,一部分是去掉之后影响连通性的点,称其为割点. 然后分两种情况讨论,如果该点不是割点,则最终结果直接加上2*(n- ...
- 「Algospot」龙曲线DRAGON
一道考验思维的好题,顺便总结求第k大问题的常规思路: 传送门:$>here<$ 题意 给出初始串FX,每分形一次所有X替换为X+YF,所有Y替换为FX-Y.问$n$代字符串第$p$位起长度 ...