查看历史--Git日志

git log命令可以显示所有的提交(commit)…..

显示补丁(patchs):

$ git log -p

commit da9973c6f9600d90e64aac647f3ed22dfd692f70
Author: Robert Schiele <rschiele@gmail.com>
Date:   Mon Aug 18 16:17:04 2008 +0200

    adapt git-cvsserver manpage to dash-free syntax

diff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt
index c2d3c90..785779e 100644
--- a/Documentation/git-cvsserver.txt
+++ b/Documentation/git-cvsserver.txt
@@ -11,7 +11,7 @@ SYNOPSIS
 SSH:

 [verse]
-export CVS_SERVER=git-cvsserver
+export CVS_SERVER="git cvsserver"
 'cvs' -d :ext:user@server/path/repo.git co <HEAD_name>

 pserver (/etc/inetd.conf):

## 日志统计

如果用--stat选项使用git log,它会显示在每个提交(commit)中哪些文件被修改了,这些文件分别添加或删除了多少行内容。

 ➜  changjiashuai git:(master) git log --stat
commit adf7bdbdbe5a8d11339109cc467cac4242d1562a
Author: changjiashuai <changjiashuai@gmail.com>
Date:   Thu Jul 10 16:04:35 2014 +0800

    --update test post

 ...13\345\257\274\345\205\245\345\210\260Android Studio.markdown" | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

commit e0239348407af7cde745994ba52761645da2e0df
Author: changjiashuai <changjiashuai@gmail.com>
Date:   Thu Jul 10 13:48:15 2014 +0800

    --update test post

 ...74\345\205\245\345\210\260Android Studio.markdown" | 19 +++++++++++++++++++
 ...\257\274\345\205\245\345\210\260Android Studio.md" | 19 -------------------
 2 files changed, 19 insertions(+), 19 deletions(-)

commit 81020af469bb390c64e726ff9660ed9d7d8beea6
Author: changjiashuai <changjiashuai@gmail.com>
Date:   Thu Jul 10 13:45:17 2014 +0800

格式化日志

你可以按你的要求来格式化日志输出。--pretty参数可以使用若干表现格式,如oneline:

➜  changjiashuai git:(master) git log --pretty=oneline
adf7bdbdbe5a8d11339109cc467cac4242d1562a --update test post
e0239348407af7cde745994ba52761645da2e0df --update test post
81020af469bb390c64e726ff9660ed9d7d8beea6 --test add post blog
e1550187da873a3545b3600da62d923c77a5effd --init my blog

或者你也可以使用short格式:

➜  changjiashuai git:(master) git log --pretty=short
commit adf7bdbdbe5a8d11339109cc467cac4242d1562a
Author: changjiashuai <changjiashuai@gmail.com>

    --update test post

commit e0239348407af7cde745994ba52761645da2e0df
Author: changjiashuai <changjiashuai@gmail.com>

    --update test post

commit 81020af469bb390c64e726ff9660ed9d7d8beea6
Author: changjiashuai <changjiashuai@gmail.com>

    --test add post blog

commit e1550187da873a3545b3600da62d923c77a5effd
Author: changjiashuai <changjiashuai@gmail.com>

    --init my blog

你也可用medium,full,fuller,email,raw。如果这些格式不完全符合你的要求,你也可以用--pretty=format参数(参见:git log)来创建你自己的格式。

➜  changjiashuai git:(master) git log --pretty=format:'%h was %an, %ar, message: %s'
adf7bdb was changjiashuai, 18 hours ago, message: --update test post
e023934 was changjiashuai, 21 hours ago, message: --update test post
81020af was changjiashuai, 21 hours ago, message: --test add post blog
e155018 was changjiashuai, 21 hours ago, message: --init my blog

另一个有趣的事是:你可以用--graph选项来可视化你的提交图(commit graph),就像下面这样:

➜  changjiashuai git:(master) git log --pretty=format:'%h : %s' --graph
* adf7bdb : --update test post
* e023934 : --update test post
* 81020af : --test add post blog
* e155018 : --init my blog

它会用ASCII字符来画出一个很漂亮的提交历史(commit history)线。

日志排序

你也可以把日志记录按一些不同的顺序来显示。 注意:git日志从最近的提交(commit)开始,并且从这里开始向它们父分支回溯。然而git历史可能包括多个互不关联的开发路线,这样有时提交(commit)显示出来就有点杂乱。

如果你要指定一个特定的顺序,可以为git log命令添加顺序参数(ordering option)。

按默认情况,提交(commits)会按逆时间(reverse chronological)顺序显示。

但是你也可以指定--topo-order参数,这就会让提交(commits)按拓扑顺序显示(就是子提交在它们的父提交前显示)。如果你用git log命令按拓扑顺序来显示git仓库的提交日志,你会看到”开发线”(development lines)都会集合在一起。

➜  changjiashuai git:(master) git log --pretty=format:'%h : %s' --topo-order --graph
* adf7bdb : --update test post
* e023934 : --update test post
* 81020af : --test add post blog
* e155018 : --init my blog

你也可以用’–date-order’参数,这样显示提交日志的顺序主要按提交日期来排序. 这个参数和’–topo-order’有一点像,没有父分支会在它们的子分支前显示,但是其它的东东还是按交时间来排序显示。你会看到”开发线”(development lines)没有集合一起,它们会像并行开发(parallel development)一样跳来跳去的:

$ git log --pretty=format:'%h : %s' --date-order --graph
*   4a904d7 : Merge branch 'idx2'
|\  
* | 81a3e0d : updated packfile code to recognize index v2
| *   dfeffce : merged in bryces changes and fixed some testing issues
| |\  
| * | c615d80 : fixed a log issue
|/ /  
| * 23f4ecf : Clarify how to get a full count out of Repo#commits
| *   9d6d250 : Appropriate time-zone test fix from halorgium
| |\  
| * | decfe7b : fixed manifest and grit.rb to make correct gemspec
| * | cd27d57 : added lib/grit/commit_stats.rb to the big list o' file
| * | 823a9d9 : cleared out errors by adding in Grit::Git#run method
| * |   4eb3bf0 : resolved merge conflicts, hopefully amicably
| |\ \  
| * | | ba23640 : Fix CommitDb errors in test (was this the right fix?
| * | | 4d8873e : test_commit no longer fails if you're not in PDT
| * | | b3285ad : Use the appropriate method to find a first occurrenc
| * | | 44dda6c : more cleanly accept separate options for initializin
| * | | 839ba9f : needed to be able to ask Repo.new to work with a bar
| | * | d065e76 : empty commit to push project to runcoderun
* | | | 791ec6b : updated grit gemspec
* | | | 756a947 : including code from github updates
| | * | 3fa3284 : whitespace
| | * | d01cffd : whitespace
| * | | a0e4a3d : updated grit gemspec
| * | | 7569d0d : including code from github updates

最后,你也可以用 ‘–reverse’参数来逆向显示所有日志。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

.NET Core的文件系统[1]:读取并监控文件的变化

ASP.NET Core 具有很多针对文件读取的应用。比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取。如果用户发送一个针对物理文件的...

6365
来自专栏老九学堂

编码秘籍,Java程序员必看的调试技巧

调试可以帮助我们识别和解决应用程序缺陷,老九君下面介绍的调试方法基本都是通用的,有了下面的这些技巧在开发中会让我们在编程中事半功倍,避免浪费时间! 1.条件断点...

3896
来自专栏bboysoul

cheat一个实用 Linux 命令示例集合

在使用linux的时候我们会经常碰到这样的问题,比如使用nmap,我后面到底加什么参数呢?碰到这种情况我们只能使用man或者它的帮助命令来查看使用方法,但是有的...

692
来自专栏大内老A

[WCF-Discovery]如何利用”发现代理”实现可用服务的实时维护?

上面的内容大部分是围绕着Ad-Hoc模式展开介绍的。Managed模式和Ad-Hoc不同之处在于可用服务的终结点通过发现代理来统一管理。客户端在进行可用目标服务...

2548
来自专栏积累沉淀

JNDI数据库连接池

JNDI的全称是java命名与目录接口(Java Naming and Directory Interface),是一个应用程序设计的API,为开发人员提供了查...

2155
来自专栏Java后端技术

关闭Eclipse的控制台console自动跳出

  在eclipse中进行开发,尤其是在后台有项目运行的时候,当有log或者错误需要打印到console中时,控制台就会被自动弹出,恰好这时候你又在编写代码,就...

832
来自专栏大内老A

谈谈你最熟悉的System.DateTime[下篇]

在《上篇》中,我们实现了将保存有消息条目的XML向CodeDOM的转换,即是将XML文件生成一个CodeCompileUnit对象,而该CodeCompileU...

1765
来自专栏用户2442861的专栏

java数据库操作 (附带数据库连接池的代码)

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188

2162
来自专栏owent

可执行文件压缩

最近看Rust相关东西的时候看到一篇关于压缩可执行文件的文章。压缩可执行文件对嵌入式开发特别有用,但是延伸一下用来减少我们游戏行业里预编译的工具二进制包大小和A...

3901
来自专栏大内老A

提供第三种代码生成方式——通过自定义BuildProvider为ASP.NET提供代码生成

之前写了一些关于代码生成的文章,提供了两种不同方式的代码生成解决方案,即CodeDOM+Custom Tool和T4。对于ASP.NET应用,你还有第三种选择—...

22110

扫码关注云+社区