查看提交历史
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 -0700
changed the verison number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gmail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test code
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gmail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
first commit
默认不用任何参数的话,git log
会按提交时间列出所有的更新,最近的更新排在最上面。每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。
常用参数
有许多选项可以帮助搜寻的提交。
-n
默认git log
显示所有提交,
-
git log -2
显示最后两次提交、 -
git log -1
显示最后一次提交
filename
查看某个文件的提交
-
git log README
显示README的所有提交 -
git log -2 README
显示README最后两次提交
-p
展开显示每次提交的内容差异(把修改的内容全部打印出来)
-
git log
显示每次提交的差异 -
git log -p -2
显示最后两次提交的差异 -
git log -p README
显示README的每次提交差异
--word-diff
展示每次提交的内容差异(单词层面的对比)
-
git log -U2 --word-diff
显示每次提交的单词的差异 -
git log -p -2 --word-diff
最后两次提交的单词的差异
-U2
上下文打印两行 (已修改行为基础,上下各两行)
-U3
上下文打印三行
这里展示的新增加的单词被 {+ +}
括起来,被删除的单词被 [- -]
括起来
--stat
显示简要的每个文件的增改行数统计,列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计
-
git log --stat
显示每提交的每个文件的增改行数
--shortstat 不常用
只显示 --stat 中最后的行数修改添加移除统计
git log --shortstat
--name-only 不常用
仅在提交信息后显示已修改的文件清单
git log --name-only
--abbrev-commit
显示 SHA-1 的前几个字符,而非所有的 40 个字符
git log abbrev-commit
--pretty
使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)
-
git log --pretty=oneline
每次提交显示在一行 -
git log --pretty=short
每次提交显示简短信息 (Author) -
git log --pretty=full
每次提交显示相对多的内容(Author/Commit) -
git log --pretty=fuller
每次提交显示详细内容 (Author/AuthorDate/Commit/CommitDate) -
git log --pretty=format:"%h - %an, %ar: %s"
自定义格式显示
format格式
选项 | 说明 |
---|---|
%H | 提交对象(commit)的完整哈希字串 |
%h | 提交对象的简短哈希字串 |
%T | 树对象(tree)的完整哈希字串 |
%t | 树对象的简短哈希字串 |
%P | 父对象(parent)的完整哈希字串 |
%p | 父对象的简短哈希字串 |
%an | 作者(author)的名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用 -date= 选项定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者(committer)的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期,按多久以前的方式显示 |
%s | 提交说明 |
--graph
看到开头多出一些 ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况
限制输出长度
git log
还有许多非常实用的限制输出长度的选项,也就是只输出部分提交信息。之前我们已经看到过 -2 了,它只显示最近的两条提交,实际上,这是 -<n>
选项的写法,其中的 n 可以是任何自然数,表示仅显示最近的若干条提交。
选项 | 说明 |
---|---|
-(n) | 仅显示最近的 n 条提交 |
--since, --after | 仅显示指定时间之后的提交 |
--until, --before | 仅显示指定时间之前的提交 |
--author | 仅显示指定作者相关的提交 |
--grep | 模糊匹配提交内容 (多次--grep 默认查询是或) |
--all-match | 多次--grep与查询 需要加上 --all-match |
--committer | 仅显示指定提交者相关的提交 |
-
git log --since="2017-11-29"
显示11月29号以后的提交(包括29号) -
git log --after="2017-11-29"
(同上) -
git log --until="2017-11-29"
显示11月29号以前的提交(包括29号) -
git log --before="2017-11-29"
(同上) -
git log --author="yin"
显示作者是“yin”提交的内容 -
git log --grep="FTP"
显示提交内容包含FTP内容的提交 -
git log --grep="update" --grep="list" --all-match
查询提交内容包含update且包含list的提交纪录 -
git log --committer="yin"
显示提交者(commit的人)的提交
$ git log --grep="update" --grep="list" --all-match
commit 2d06020a37be740273c52daabd867a3e23ccc226
Author: yin <yjd@zhuming.com>
Date: Mon Oct 9 17:10:13 2017 +0800
web update response list