Git---查看提交历史记录

概述:

我们是如何记录我们的人生----日记,如果你那天闲来无事可以翻一翻,说明我们都是有故事的人,哈哈,如果我们想要查看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
总结:

  • 1.时间是倒序
  • 2.commit 后面就是计算出来的SHA-1校验
  • 3.Author 提交人 这个是在配置git config 时候配置的
  • 4.Date:提交日期
  • 5.提交内容(提交时候的注释)

那么问题来,如果有很多历史记录,我想看特定记录,是不是需要检索和筛选功能?

常用的参数 -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)
总结:

  • diff表示两个文件不同
  • index(索引)提交动作产生索引
  • -HelloWorld! 前面-表示删除
  • +将计就计 前面+表示添加

看一些统计信息用--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    提交说明

如果你还觉得不够,最后一招,--graph,用图形拯救你,不过在分支合并时候展示非凡的特效

语法: 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
|\ \ \
:


当然git log 还有其他参数如下:

-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(后跟指定格式)。

2.限制输出长度

语法: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 展示和检索过滤数据。

你可能感兴趣的:(git)