10个例子教会你在Linux上查看Git提交

Git的Log工具让你能够查看一个项目之前的提交(Commit)的信息。

Log命令最简单的用法能够列出对应于当前检出(check out)分支(Branch)的提交。这些提交以时间顺序排列,最近的提交最先出现。
git

1.列出所有提交

通过使用-all选项,你可以强制log工具显示所有的提交(无论是否与当前检出有关)。

$ git log --all
commit c36d2103222cfd9ad62f755fee16b3f256f1cb21
Author: Bob Smith
Date: Tue Mar 25 22:09:26 2014 -0300
Ut sit.
commit 97eda7d2dab729eda23eefdc14336a5644e3c748
Author: John Doe
Date: Mon Mar 24 10:14:08 2014 -0300
Mollis interdum ullamcorper sociosqu, habitasse arcu magna risus congue dictum arcu, odio.
.
.
.

2.显示最近的n次提交

Git的Log工具的真正强大之处在于它的灵活性。各种各样的选项,让你不仅能够以任意所需要的粒度来筛选提交,还能够裁出你所需要的输出格式。

对提交进行筛选最常见的方式就是限定输出最近的n次提交。通过使用选项-就可以达到这一目的。请用你想要显示的提交的个数替换掉。例如,要查看最近的3次提交:

$ git log -3
commit c36d2103222cfd9ad62f755fee16b3f256f1cb21
Author: Bob Smith
Date: Tue Mar 25 22:09:26 2014 -0300
Ut sit.
commit 97eda7d2dab729eda23eefdc14336a5644e3c748
Author: John Doe
Date: Mon Mar 24 10:14:08 2014 -0300
Mollis interdum ullamcorper sociosqu, habitasse arcu magna risus congue dictum arcu, odio.
commit 3ca28cfa2b8ea0d765e808cc565e056a94aceaf5
Author: Bobby Jones
Date: Mon Mar 24 01:52:04 2014 -0300

Fermentum magnis facilisis torquent platea sapien hac, aliquet torquent ad netus risus.

3. 筛选提交的作者或提交人

另一种对提交进行筛选的常见方式是按照执行提交的人或者提交的作者来进行筛选。这需要用到选项-author和-committer。语法如下:

$ git log --author
git log --committer

author选项将输出的结果限定为为作者的提交,而-commitrer选项将输出结果限定为所执行的提交。多数情况下,提交的作者和提交者是同一个人(一般你都可以假定这种情况成立)。但是在一些情况下某个开发者将一个补丁提交审核,最终可能并不是他完成代码的提交。

$ git log --author=Bob
commit c36d2103222cfd9ad62f755fee16b3f256f1cb21
Author: Bob Smith
Date: Tue Mar 25 22:09:26 2014 -0300
Ut sit.
commit 3ca28cfa2b8ea0d765e808cc565e056a94aceaf5
Author: Bobby Jones
Date: Mon Mar 24 01:52:04 2014 -0300
Fermentum magnis facilisis torquent platea sapien hac, aliquet torquent ad netus risus.
commit cfc101ad280f5b005c8d49c91e849c6c40a1d275
Author: Bob Smith
Date: Thu Mar 20 10:31:22 2014 -0300
Natoque, turpis per vestibulum neque nibh ullamcorper.
.
.
.

注意:注意这一选项是如何匹配所有符合条件的提交的,我们指定的是commit’s author的一个子串(上面的例子中,我们看到Bob Smith和Bobby Jones的提交都在筛选结果中)。

4. 按照“X天以前”筛选提交

很多时候,你都想要将筛选的结果限定在某个日期范围内。你可以用-before选项和-after选项来实现这一目的:

$ git log --before
git log --after

可以是“yyyy-mm-dd”格式的字符串。Git还能接受Ruby表达式,因此你可以按照下面的方式来查看最近两天的提交:

$ git log --after 2.days.ago
commit c36d2103222cfd9ad62f755fee16b3f256f1cb21
Author: Bob Smith
Date: Tue Mar 25 22:09:26 2014 -0300
Ut sit.
commit 97eda7d2dab729eda23eefdc14336a5644e3c748
Author: John Doe
Date: Mon Mar 24 10:14:08 2014 -0300
Mollis interdum ullamcorper sociosqu, habitasse arcu magna risus congue dictum arcu, odio.
commit 3ca28cfa2b8ea0d765e808cc565e056a94aceaf5
Author: Bobby Jones
Date: Mon Mar 24 01:52:04 2014 -0300
Fermentum magnis facilisis torquent platea sapien hac, aliquet torquent ad netus risus.

5.按照日期期间筛选提交

将两个选项结合起来,就指定了一个日期范围:

$ git log --after --before

例如,要查看2014年2月2日的提交:

$ git log --after "2014-02-01" --before "2014-02-02"
commit 69e1684ae9605544707fc36a7bf37da93dc7b015
Author: Bob Smith
Date: Sun Feb 2 01:26:00 2014 -0400
Praesent tempus varius vel feugiat mi tempor felis parturient.

6.查看每次提交的更改的Diff

用于定制输出格式的选项:要查看每次提交完整的diff,请使用选项-p(你可以认为p代表patch):

$ git log -p
commit c36d2103222cfd9ad62f755fee16b3f256f1cb21
Author: Bob Smith
Date: Tue Mar 25 22:09:26 2014 -0300
Ut sit.
diff --git a/foo.txt b/foo.txt
index 5554f5b..2773ba4 100644
--- a/foo.txt
+++ b/foo.txt
@@ -436,3 +436,4 @@ Fermentum mollis.
Lacus fermentum nonummy purus amet aliquam taciti fusce facilisis magna.
Viverra facilisi curae augue.
Purus ve nunc mi consectetuer cras.
+Ad, maecenas egestas viverra blandit odio.
commit 97eda7d2dab729eda23eefdc14336a5644e3c748
Author: John Doe
Date: Mon Mar 24 10:14:08 2014 -0300
Mollis interdum ullamcorper sociosqu, habitasse arcu magna risus congue dictum arcu, odio.
diff --git a/foo.txt b/foo.txt
index 9cdef98..5554f5b 100644
--- a/foo.txt
+++ b/foo.txt
@@ -435,3 +435,4 @@ Lacinia et enim suspendisse conubia lacus.
Fermentum mollis.
Lacus fermentum nonummy purus amet aliquam taciti fusce facilisis magna.
Viverra facilisi curae augue.
+Purus ve nunc mi consectetuer cras.
.
.
.

7.查看每次提交的更改的概要

要查看每次提交的更改的概要的话(增加或者减少的行数等等),请使用选项-stat:

$ git log --stat
commit c36d2103222cfd9ad62f755fee16b3f256f1cb21
Author: Bob Smith
Date: Tue Mar 25 22:09:26 2014 -0300
Ut sit.
foo.txt | 1 +
1 file changed, 1 insertion(+)
commit 97eda7d2dab729eda23eefdc14336a5644e3c748
Author: John Doe
Date: Mon Mar 24 10:14:08 2014 -0300
Mollis interdum ullamcorper sociosqu, habitasse arcu magna risus congue dictum arcu, odio.
foo.txt | 1 +
1 file changed, 1 insertion(+)

8.每次提交显示一行结果

如果想要以单行的形式显示单次提交的最简信息的话,请使用选项-oneline。每次提交将会以该次提交的哈希值紧接着提交消息(Commit Message)的形式在一行中出现:

$ git log --oneline
c36d210 Ut sit.
97eda7d Mollis interdum ullamcorper sociosqu, habitasse arcu magna risus congue dictum arcu, odio.
3ca28cf Fermentum magnis facilisis torquent platea sapien hac, aliquet torquent ad netus risus.
3a96c1e Proin aenean vestibulum sociosqu vitae platea, odio, nisi habitasse at, in lorem odio varius.
1f0548c Nulla odio feugiat, id, volutpat litora, adipiscing.
cfc101a Natoque, turpis per vestibulum neque nibh ullamcorper.
.
.
.

9.以ASCII图形的方式查看提交历史

Git的Log工具还可以以ASCII艺术图形的方式显示提交历史,只需要使用-graph选项就可以了。这一选项和前面的-oneline选项搭配使用有很好的效果。

$ git log --graph
* commit c36d2103222cfd9ad62f755fee16b3f256f1cb21
| Author: Bob Smith
| Date: Tue Mar 25 22:09:26 2014 -0300
|
| Ut sit.
|
* commit 97eda7d2dab729eda23eefdc14336a5644e3c748
| Author: John Doe
| Date: Mon Mar 24 10:14:08 2014 -0300
|
| Mollis interdum ullamcorper sociosqu, habitasse arcu magna risus congue dictum arcu, odio.
|
* commit 3ca28cfa2b8ea0d765e808cc565e056a94aceaf5
| Author: Bobby Jones
| Date: Mon Mar 24 01:52:04 2014 -0300
|
| Fermentum magnis facilisis torquent platea sapien hac, aliquet torquent ad netus risus.
.
.
.

10.格式化Git的Log输出

要对Log输出进行全面的格式化控制的话,请使用-pretty选项。这个选项在你想要将Log工具的输出用于报告中的时候非常有用。该选项的语法如下:

$git log --pretty=format:""
The are specified in a similar way as formatted strings are in many languages. For example:
$ git log --pretty=format:"Commit Hash: %H, Author: %aN, Date: %aD"
Commit Hash: c36d2103222cfd9ad62f755fee16b3f256f1cb21, Author: Bob Smith, Date: Tue, 25 Mar 2014 22:09:26 -0300
Commit Hash: 97eda7d2dab729eda23eefdc14336a5644e3c748, Author: John Doe, Date: Mon, 24 Mar 2014 10:14:08 -0300
Commit Hash: 3ca28cfa2b8ea0d765e808cc565e056a94aceaf5, Author: Bobby Jones, Date: Mon, 24 Mar 2014 01:52:04 -0300
Commit Hash: 3a96c1ed29e85f1a119ad39033511413aad616d1, Author: John Doe, Date: Sun, 23 Mar 2014 06:05:49 -0300
Commit Hash: 1f0548cc700988903380b8ca40fd1fecfa50347a, Author: John Doe, Date: Fri, 21 Mar 2014 17:53:49 -0300
.
.
.

如果想要查看所有可用的格式化选项的话,请查阅Git手册的Log工具部分,或者在线浏览其文档

$git help log

最后需要注意的事情是,你可以以任意你喜欢的方式,组合使用这些选项。这让你能够同时定制查询和格式化输出。

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部