| 参数 | 说明 |
|---|---|
-q, --quiet |
安静模式,抑制差异输出 |
--source |
显示提交的来源 |
--use-mailmap |
使用邮件映射文件(更改提交用户的用户信息) |
--decorate[=...] |
装饰选项 |
--L <n,m:file> |
显示文件中特定行范围的日志,从1开始计数。从第n行开始,到第m行结束。也会显示差异。 |
--show-signature |
显示已签名提交的签名 |
-i, --regexp-ignore-case |
匹配正则表达式限制模式,不区分字母大小写 |
第2.1节:“常规”Git日志
git log
将显示所有提交记录,包括作者和哈希值。每条提交记录会占据多行。若希望每条提交记录仅显示一行,可查看 onelineing 部分。使用 q 键退出日志。
默认情况下,不带参数时,
git log会按反向时间顺序列出该仓库中的提交记录——即最新提交首先显示。如你所见,此命令会列出每条提交记录的SHA-1校验和、作者姓名和电子邮件、提交日期以及提交信息。-来源
示例(来自Free Code Camp仓库):
commit 87ef97f59e2a2f4dc425982f76f14a57d0900bcf
Merge: e50ff0d eb8b729
Author: Brian
Date: Thu Mar 24 15:52:07 2016 -0700
Merge pull request #7724 from BKinahan/fix/where-art-thou
Fix 'its' typo in Where Art Thou description
commit eb8b7298d516ea20a4aadb9797c7b6fd5af27ea5
Author: BKinahan
Date: Thu Mar 24 21:11:36 2016 +0000
Fix 'its' typo in Where Art Thou description
commit e50ff0d249705f41f55cd435f317dcfd02590ee7
Merge: 6b01875 2652d04
Author: Mrugesh Mohapatra
Date: Thu Mar 24 14:26:04 2016 +0530
Merge pull request #7718 from deathsythe47/fix/unnecessary-comma
Remove unnecessary comma from CONTRIBUTING.md
若希望限制命令仅显示最后n条提交记录,可简单传递一个参数。例如,若想列出最后2条提交记录:
git log -2
第2.2节:更美观的日志
若想以更美观的图形结构查看日志,可使用:
git log --decorate --oneline --graph
示例输出:
* e0c1cea (HEAD -> maint, tag: v2.9.3, origin/maint) Git 2.9.3
* 9b601ea Merge branch 'jk/difftool-in-subdir' into maint
|\
| * 32b8c58 difftool: use Git::* functions instead of passing around state
| * 98f917e difftool: avoid $GIT_DIR and $GIT_WORK_TREE
| * 9ec26e7 difftool: fix argument handling in subdirs
* | f4fd627 Merge branch 'jk/reset-ident-time-per-commit' into maint
...
由于这是一个较长的命令,可为其设置别名:
git config --global alias.lol "log --decorate --oneline --graph"
使用别名版本:
# 当前分支的历史记录:
git lol
# 活动分支(HEAD)、develop分支和origin/master分支的合并历史:
git lol HEAD develop origin/master
# 仓库中所有内容的合并历史:
git lol --all
第2.3节:为日志上色
git log --graph --pretty=format:'%C(red)%h%Creset -%C(yellow)%d%Creset %s %C(green)(%cr) %C(yellow)<%an>%Creset'
format选项允许你自定义日志输出格式:
| 参数 | 详情 |
|---|---|
%C(color_name) |
为之后的内容设置颜色选项 |
%h 或 %H |
缩写提交哈希值(使用%H获取完整哈希值) |
%Creset |
将颜色重置为默认终端颜色 |
%d |
引用名称 |
%s |
主题 [提交信息] |
%cr |
相对于当前日期的提交日期 |
%an |
作者姓名 |
第2.4节:单行日志
git log --oneline
将显示所有提交记录,仅包含哈希值的前部分和提交信息。每条提交记录仅占一行,正如 oneline 标志所暗示的。
oneline选项将每条提交记录打印在单行上,这在查看大量提交记录时非常有用。-来源
示例(来自Free Code Camp仓库,与前面示例中的代码段相同):
87ef97f Merge pull request #7724 from BKinahan/fix/where-art-thou
eb8b729 Fix 'its' typo in Where Art Thou description
e50ff0d Merge pull request #7718 from deathsythe47/fix/unnecessary-comma
2652d04 Remove unnecessary comma from CONTRIBUTING.md
6b01875 Merge pull request #7667 from zerkms/patch-1
766f088 Fixed assignment operator terminology
d1e2468 Merge pull request #7690 from BKinahan/fix/unsubscribe-crash
bed9de2 Merge pull request #7657 from Rafase282/fix/
若希望限制命令仅显示最后n条提交记录,可简单传递一个参数。例如,若想列出最后2条提交记录:
git log -2 --oneline
第2.5节:日志搜索
git log -S "#define SAMPLES"
搜索特定字符串的添加或删除,或与提供的 REGEXP 匹配的字符串。本例中,我们正在寻找 #define SAMPLES 字符串的添加/删除。例如:
+#define SAMPLES 100000
或
-#define SAMPLES 100000
git log -G"#define SAMPLES"
搜索包含特定字符串或与提供的 REGEXP 匹配的字符串的行的变化。例如:
-#define SAMPLES 100000
+#define SAMPLES 100000000
第2.6节:按作者姓名分组列出所有贡献
git shortlog summarizes git log and groups by author
若未提供参数,将按提交者顺序显示每个提交者所作的所有提交记录。
$ git shortlog
Committer 1 (<number_of_commits>):
Commit Message 1
Commit Message 2
...
Committer 2 (<number_of_commits>):
Commit Message 1
Commit Message 2
...
若仅想查看提交数量并抑制提交描述,可传递 summary 选项:
-s
--summary
$ git shortlog -s
<number_of_commits> Committer 1
<number_of_commits> Committer 2
若想按提交数量排序而非按提交者姓名字母顺序排序,可传递 numbered 选项:
-n
--numbered
若想添加提交者的电子邮件,可添加 email 选项:
-e
--email
若想显示除提交主题之外的其他信息,也可提供自定义 format 选项:
--format
这可以是 git log 的--format选项接受的任何字符串。
有关此选项的更多信息,请参见上文的“为日志上色”部分。
第2.7节:在git日志中搜索提交字符串
使用日志中的某些字符串搜索 git 日志:
git log [options] --grep "search_string"
示例:
git log --all --grep "removed file"
将在所有分支的所有日志中搜索 removed file 字符串。
从 git 2.4+ 版本开始,可使用 --invert-grep 选项来反转搜索。
示例:
git log --grep="add file" --invert-grep
将显示不包含 add file 的所有提交。
第2.8节:文件中特定行范围的日志
$ git log -L 1,20:index.html
commit 6a57fde739de66293231f6204cbd8b2feca3a869
Author: John Doe <john@doe.com>
Date: Tue Mar 22 16:33:42 2016 -0500
commit message
diff --git a/index.html b/index.html
--- a/index.html
+++ b/index.html
@@ -1,17 +1,20 @@
<!DOCTYPE HTML>
<html>
\- <head>
\- <meta charset="utf-8">
+
+<head>
\+ <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
第2.9节:筛选日志
git log --after '3 days ago'
特定日期也可:
git log --after 2016-05-01
与其他接受日期参数的命令和标志一样,允许的日期格式是GNU date支持的(非常灵活)。
--after的别名是--since。
对于相反的情况,也存在标志:--before和--until。
你还可以按作者筛选日志。例如:
git log --author=author
第2.10节:带有内联更改的日志
若想查看带有内联更改的日志,可使用 -p 或 --patch 选项。
git log --patch
示例(来自Trello Scientist仓库):
commit 8ea1452aca481a837d9504f1b2c77ad013367d25
Author: Raymond Chou <info@raychou.io>
Date: Wed Mar 2 10:35:25 2016 -0800
fix readme error link
diff --git a/README.md b/README.md
index 1120a00..9bef0ce 100644
--- a/README.md
+++ b/README.md
@@ -134,7 +134,7 @@ the control function threw, but *after* testing the other functions and
readying the logging. The criteria for matching errors is based on the constructor and message.
-You can find this full example at [examples/errors.js](examples/error.js).
+You can find this full example at [examples/errors.js](examples/errors.js).
\## Asynchronous behaviors
commit d3178a22716cc35b6a2bdd679a7ec24bc8c63ffa
:
第2.11节:显示已提交的文件
git log --stat
示例:
commit 4ded994d7fc501451fa6e233361887a2365b91d1
Author: Manass.s Souza <manasses.inatel@gmail.com>
Date: Mon Jun 6 21:32:30 2016 -0300
MercadoLibre java-sdk dependency
mltracking-poc/.gitignore | 1 +
mltracking-poc/pom.xml | 14 ++++++++++++--
2 files changed, 13 insertions(+), 2 deletions(-)
commit 506fff56190f75bc051248770fb0bcd976e3f9a5
Author: Manass.s Souza <manasses.inatel@gmail.com>
Date: Sat Jun 4 12:35:16 2016 -0300
[manasses] generated by SpringBoot initializr
.gitignore | 42
++++++++++++
mltracking-poc/mvnw | 233
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mltracking-poc/mvnw.cmd | 145
+++++++++++++++++++++++++++++++++++++++
mltracking-poc/pom.xml | 74
++++++++++++++++++++
mltracking-poc/src/main/java/br/com/mls/mltracking/MltrackingPocApplication.java | 12 ++++
mltracking-poc/src/main/resources/application.properties | 0
mltracking-poc/src/test/java/br/com/mls/mltracking/MltrackingPocApplicationTests.java | 18 +++++
7 files changed, 524 insertions(+)
第2.12节:显示单个提交的内容
使用 git show 可查看单个提交
git show 48c83b3
git show 48c83b3690dfc7b0e622fd220f8f37c26a77c934
示例:
commit 48c83b3690dfc7b0e622fd220f8f37c26a77c934
Author: Matt Clark <mrclark32493@gmail.com>
Date: Wed May 4 18:26:40 2016 -0400
提交信息将显示在此处。
diff --git a/src/main/java/org/jdm/api/jenkins/BuildStatus.java
b/src/main/java/org/jdm/api/jenkins/BuildStatus.java
index 0b57e4a..fa8e6a5 100755
--- a/src/main/java/org/jdm/api/jenkins/BuildStatus.java
+++ b/src/main/java/org/jdm/api/jenkins/BuildStatus.java
@@ -50,7 +50,7 @@ public enum BuildStatus {
colorMap.put(BuildStatus.UNSTABLE, Color.decode( "#FFFF55" ));
- colorMap.put(BuildStatus.SUCCESS, Color.decode( "#55FF55" ));
+ colorMap.put(BuildStatus.SUCCESS, Color.decode( "#33CC33" ));
colorMap.put(BuildStatus.BUILDING, Color.decode( "#5555FF" ));
第2.13节:两个分支之间的Git日志
git log master..foo 将显示在 foo 分支上但不在 master 分支上的提交。这有助于查看自分支以来你添加的提交。
第2.14节:一行显示提交者姓名和自提交以来的时间
tree = log --oneline --decorate --source --pretty=format:'"%Cblue %h %Cgreen %ar %Cblue %an %C(yellow) %d %Creset %s"' --all --graph
示例:
* 40554ac 3 months ago Alexander Zolotov Merge pull request #95 from gmandnepr/external_plugins
\
| * e509f61 3 months ago Ievgen Degtiarenko Documenting new property
| * 46d4cb6 3 months ago Ievgen Degtiarenko Running idea with external plugins
| * 6253da4 3 months ago Ievgen Degtiarenko Resolve external plugin classes
| * 9fdb4e7 3 months ago Ievgen Degtiarenko Keep original artifact name as this may be important for intellij
| * 22e82e4 3 months ago Ievgen Degtiarenko Declaring external plugin in intellij section
|/
* bc3d2cb 3 months ago Alexander Zolotov Ignore DTD in plugin.xml