概述:
我们是如何记录我们的人生----日记,如果你那天闲来无事可以翻一翻,说明我们都是有故事的人,哈哈,如果我们想要查看Git提交历史记录,怎么办?
1.查看提交历史
语法:git log
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:28:47 2017 +0800
Hello
commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:03:45 2017 +0800
将计就计
commit e9128101a2572cf0b2398ca5a281c796676d0352
Author: chenliang <[email protected]>
Date: Wed Jun 7 16:58:54 2017 +0800
我提交了README
commit 6ada7cad2883d636837d6072aa27cbc8f07988cb
Author: chenliang <[email protected]>
Date: Wed Jun 7 16:24:38 2017 +0800
D:/install/Git/aa
commit 063c0f280259c2d2a97abc08bc27dbe0b01e6e6f
Author: chenliang <[email protected]>
Date: Wed Jun 7 09:10:29 2017 +0800
README
总结:
那么问题来,如果有很多历史记录,我想看特定记录,是不是需要检索和筛选功能?
常用的参数 -p 表示每次提交的内容差异(类似使用 git diff) -2 表示最近两次提交
$ git log -p -2
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:28:47 2017 +0800
Hello
diff --git a/README b/README
deleted file mode 100644
index abe187b..0000000
--- a/README
+++ /dev/null
@@ -1 +0,0 @@
-将计就计
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 (2).txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 (2).txt"
deleted file mode 100644
index e69de29..0000000
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 - \345\211\257\346\234\254.txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 - \345\211\257\346\234\254.txt"
deleted file mode 100644
index e69de29..0000000
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254.txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254.txt"
deleted file mode 100644
index e69de29..0000000
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
deleted file mode 100644
index e69de29..0000000
commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:03:45 2017 +0800
将计就计
diff --git a/README b/README
index 1a4cca6..abe187b 100644
--- a/README
+++ b/README
@@ -1,2 +1 @@
-Hello World!
-Hello World 这行是我新写的
+将计就计
(END)
总结:
看一些统计信息用--stat
$ git log --stat
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:28:47 2017 +0800
Hello
README | 1 -
...6\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 (2).txt" | 0
...46\241\243 - \345\211\257\346\234\254 - \345\211\257\346\234\254.txt" | 0
...7\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254.txt" | 0
...\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" | 0
5 files changed, 1 deletion(-)
commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:03:45 2017 +0800
将计就计
README | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
commit e9128101a2572cf0b2398ca5a281c796676d0352
:
总结:文件被新增删除记录都会被保存
看见最后的冒号(:)表示还有记录,回车就看到
现在看起来格式不符合要求,写过用java输出XML文件要想格式变得好看,format.pretty常量,git也是这样的
语法:git log --pretty = oneline (oneline表示显式一行=SHA-1+注释) ,当然还有其他值,例如:short、full、fuller
$ git log -2 --pretty=oneline
d521dd00f9b8cc3e54064abb3d8125d88e6ba412 Hello
9ddce59dbacb7160fab09c4da14523e609e9428a 将计就计
如果这个你看起来不爽,可以自定义
语法:git log --pretty=format:"你的规则" (注意等号两边不能有空格)
$ git log --pretty=format:"%h - %an, %ar : %s" -2
d521dd0 - chenliang, 51 minutes ago : Hello
9ddce59 - chenliang, 76 minutes ago : 将计就计
选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
语法: git log --pretty=format:"%h %s" --grapth (注意是两个短杠)
* 2e78057 Merge branch 'master' into smoke
|\
| * b93ec95 Make another attempt to identify new and deleted files in Grit#Diff
| * 00ed843 Ensure RubyGit's diff matches real Git's output
| * 5012845 Fix RubyGit's diff to detect additions and deletions
| * fcd9228 use a \t to avoid tab => space conversion
* | 7b3b447 add contributing section to readme
* | c701103 have Commit#short_message use first non-empty message line. closes gh-1.
* | 1af4e64 Merge commit 'b06e7ff41ad95b6fe1dbd08df7530c9d5bf76840' into smoke
|\ \
| * | b06e7ff a few lines on gems required for testing
* | | d5cde35 windows support
* | | 797d75e update history
* | | 0bbd902 Merge commit 'a88d1d96985074db9c37f3f50a45fd089d8b4a12' into smoke
|\ \ \
:
-p 按补丁格式显示每个更新之间的差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
语法:git log 参数=值
$ git log --since=2.weeks
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:28:47 2017 +0800
Hello
commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:03:45 2017 +0800
将计就计
commit e9128101a2572cf0b2398ca5a281c796676d0352
Author: chenliang <[email protected]>
Date: Wed Jun 7 16:58:54 2017 +0800
我提交了README
commit 6ada7cad2883d636837d6072aa27cbc8f07988cb
Author: chenliang <[email protected]>
Date: Wed Jun 7 16:24:38 2017 +0800
D:/install/Git/aa
:
如果你想看你提交某个字符串关键字
$ git log -S '将计就计'
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:28:47 2017 +0800
Hello
commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date: Wed Jun 7 17:03:45 2017 +0800
将计就计
其他选选项
-(n) 仅显示最近的 n 条提交
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示指定作者相关的提交。
--committer 仅显示指定提交者相关的提交。
--grep 仅显示含指定关键字的提交
-S 仅显示添加或移除了某个关键字的提交
总结:主要对于git log 展示和检索过滤数据。