查看提交历史

  • 查看提交历史

    • 不带任何选项的git log
    • -p选项
    • --stat 选项
    • --pretty=oneline选项
    • --pretty=format选项
    • git log常用选项列表
    • 参考资料

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

接下来的例子会用一个用于演示的 simplegit 项目, 运行下面的命令获取该项目源代码:

git clone https://github.com/schacon/simplegit-progit
Cloning into 'simplegit-progit'...
remote: Counting objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Unpacking objects: 100% (13/13), done.

克隆完成后,当前目录下会多出一个文件夹 simplegit-progit

$ cd simplegit-progit/
$ ls
lib/  Rakefile  README

不带任何选项的git log

运行 git log,应该会看到下面的输出:

$ git log
commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD)
Author: Scott Chacon <schacon@gmail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700changed the verison numbercommit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700removed unnecessary test codecommit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700first commit

默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。 正如你所看到的,这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。

也许你会疑惑第二行的(HEAD -> master, origin/master, origin/HEAD),我的理解是:

虽然远程仓库没有工作目录,但是依然可以有 HEAD 指针,即origin/HEAD。这个 HEAD 指针指向远程仓库的默认分支,当克隆远程仓库的时候,只有这个默认分支会被克隆,克隆后就是本地的 master 分支。HEAD -> master表示当前在 master 分支上。

git log 有许多选项可以帮助你搜寻你所要找的提交, 接下来我们介绍些最常用的。

-p选项

一个常用的选项是 -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交:

$ git log -p -2
commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD)
Author: Scott Chacon <schacon@gmail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700changed the verison numberdiff --git a/Rakefile b/Rakefile
index a874b73..8f94139 100644
--- a/Rakefile
+++ b/Rakefile
@@ -5,7 +5,7 @@ require 'rake/gempackagetask'spec = Gem::Specification.new do |s|s.platform  =   Gem::Platform::RUBYs.name      =   "simplegit"
-    s.version   =   "0.1.0"
+    s.version   =   "0.1.1"s.author    =   "Scott Chacon"s.email     =   "schacon@gmail.com"s.summary   =   "A simple gem for using Git in Ruby code."commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700removed unnecessary test codediff --git a/lib/simplegit.rb b/lib/simplegit.rb
index a0a60ae..47c6340 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -18,8 +18,3 @@ class SimpleGitendend
-
-if $0 == __FILE__
-  git = SimpleGit.new
-  puts git.show
-end
\ No newline at end of file

该选项除了显示基本信息之外,还附带了每次 commit 的变化。 当进行代码审查,或者快速浏览某个同事提交
的 commit 所带来的变化的时候,这个参数就非常有用了。

--stat 选项

如果你觉得这些信息太啰嗦,那么可以为 git log 附带一系列的总结性选项。比如说,如果想看每次提交的简略统计信息,可以使用 --stat 选项:

$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD)
Author: Scott Chacon <schacon@gmail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700changed the verison numberRakefile | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700removed unnecessary test codelib/simplegit.rb | 5 -----1 file changed, 5 deletions(-)commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700first commitREADME           |  6 ++++++Rakefile         | 23 +++++++++++++++++++++++lib/simplegit.rb | 25 +++++++++++++++++++++++++3 files changed, 54 insertions(+)
(END)

正如你所看到的,--stat 选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过
的文件有多少行被修改了(删除或者添加)。 在每次提交的最后还有一个总结——有几个文件被修改,一共增加了几行,删除了几行。

--pretty=oneline选项

另外一个常用的选项是 --pretty。 这个选项可以指定使用不同于默认格式的方式展示提交历史。 这个选项有
一些内建的子选项供你使用。 比如用 oneline 将每个提交放在一行显示,当查看的提交数很大时非常有用。

$ git log --pretty=oneline
ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD) changed the verison number
085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test code
a11bef06a3f659402fe7563abf99ad00de2209e6 first commit

--pretty=format选项

最有意思的是 format,可以定制要显示的记录格式。比如:

$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 10 years ago : changed the verison number
085bb3b - Scott Chacon, 10 years ago : removed unnecessary test code
a11bef0 - Scott Chacon, 10 years ago : first commit

git log --pretty=format 常用的选项有:

你一定奇怪 “作者” 和 “提交者” 之间究竟有何差别, 其实作者指的是实际作出修改的人,提交者指的是最后将此工
作成果提交到仓库的人。 所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是
作者,而那个核心成员就是提交者。

当 oneline 或 format 与另一个 log 选项 --graph 结合使用时,Git 会用一些ASCII字符串来形象地展示你的分支、合并历史:

$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
*  5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
*  11d191e Merge branch 'defunkt' into local

git log常用选项列表

以上只是简单介绍了一些 git log 命令支持的选项。 下表中的 git log 常用选项列出了我们目前涉及到的和没涉及到的选项,以及它们是如何影响 log 命令的输出的:


参考资料

《精通Git(第2版)》,Scott Chacon & Ben Straub,人民邮电出版社

查看提交历史 —— Git 学习笔记 11相关推荐

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

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

  2. Git学习笔记 -- 安装git、创建版本库、时光穿梭、远程仓库

    一.Git的安装 在window系统上安装:从https://git-for-windows.github.io下载,然后按默认选项安装即可: 安装完成后,在"桌面"上右击,在弹出 ...

  3. Git笔记(6) 查看提交历史

    Git笔记(6) 查看提交历史 1. 提交历史 2. 查看 3. 常用选项 3.1. 差异 3.2. 总结 3.3. 自定义格式 3.3.1. 整合一行 3.3.2. 详尽程度 3.3.3. 定制格式 ...

  4. git回退历史版本无法上传_Git实用教程(四) | Git本地库操作(查看提交历史、版本前进回退)...

    Git实用教程专栏回顾 Git实用教程(一) | 为什么需要版本控制?(以嵌入式项目开发为例) Git实用教程(二) | Git简介及安装详解 Git实用教程(三) | Git本地库操作(仓库初始化. ...

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

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

  6. git 历史操作日志_Git - 查看提交历史

    查看提交历史 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史. 完成这个任务最简单而又有效的工具是 git log 命令. 我们使用一个非常简单的 "simplegit& ...

  7. 2.3 Git 基础 - 查看提交历史

    查看提交历史 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史. 完成这个任务最简单而又有效的工具是 git log 命令. 接下来的例子会用我专门用于演示的 simplegit 项 ...

  8. Git 查看提交历史

    Git 查看提交历史 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看. 使用 git log 命令列出历史提交记录如下: $ git ...

  9. Git学习笔记使用记录

    文章目录 Git学习笔记 基本 配置环境 Install 初始化workspace Git 全局设置Global Configuration: 配置账户 创建项目仓库Create project re ...

最新文章

  1. linux+软盘启动程序,软盘上的Linux系统方案
  2. 最小生成树板子-AcWing 858. Prim算法求最小生成树
  3. iOS中常见的设计模式(MVC/单例/委托/观察者)
  4. 从B树、B+树、B*树谈到R树
  5. IBM要推POWER9,来了解一下POWER处理器的前世今生
  6. 计算机中if函数的使用方法,excelif函数多层嵌套的使用方法
  7. fprintf用法解析
  8. 在Python中安装meta模块
  9. qq音乐for linux,[Linux] QQ音乐官方上线 For Linux V1.0.5-1 [2020.12.2]
  10. 霍纳法则(Horner Rule)--计算多项式的值
  11. 暂停更新公告—行走的皮卡丘
  12. Qt QPainter::end: Painter ended whith 2 saced states
  13. 快速工业相机镜头的选型:焦距、工作距离、视野等的计算
  14. MATLAB基础应用精讲-【基础知识篇】脚本文件
  15. 绝对的开怀大笑-轻松一下
  16. Android逆向工程-破解 哈皮妹-萝莉
  17. k8s使用(kubernetes)
  18. Spring @Transactional 与 JTA @Transactional
  19. 【数学】仿射变换(续1)
  20. 服务器性能监控及常用命令

热门文章

  1. 《机器学习实战》chapter 07利用AdaBoosting元算法提高分类性能
  2. NYOJ 674 善良的国王(树形背包DP)
  3. Ubuntu16.04下Hadoop 2.7.3的安装与配置
  4. CSS DIV Shadow
  5. 洛谷——P1640 [SCOI2010]连续攻击游戏
  6. 【python】self cls
  7. JavaScript window.getComputedStyle()
  8. 关于IOS开发知识的总结
  9. MTM:matlab实现4主函数
  10. Git学习笔记:远程仓库