git命令——git log

Posted kelamoyujuzhen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git命令——git log相关的知识,希望对你有一定的参考价值。

功能

在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的方法是 使用git log 命令。

参数

技术分享图片

不带任何参数

技术分享图片
$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <[email protected]>
Date: Mon Mar 17 21:52:11 2008 -0700
    changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <[email protected]>
Date: Sat Mar 15 16:40:33 2008 -0700
    removed unnecessary test

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <[email protected]>
Date: Sat Mar 15 10:31:28 2008 -0700
    first commit
View Code

默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。git log会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。

-p

-p用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交:

-p除了显示基本信息之外,还附带了每次 commit 的变化。 当进行代码审查,或者快速浏览某个搭档提交的 commit 所带来的变化的时候,这个参数就非常有用了。

技术分享图片
$ git log -p -2
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <[email protected]>
Date: Mon Mar 17 21:52:11 2008 -0700

    changed the version number
    
diff --git a/Rakefile b/Rakefile
index a874b73..8f94139 100644
--- a/Rakefile
+++ b/Rakefile
@@ -5,7 +5,7 @@ require rake/gempackagetask
 spec = Gem::Specification.new do |s|
    s.platform = Gem::Platform::RUBY
    s.name = "simplegit"
-   s.version = "0.1.0"
+   s.version = "0.1.1"
    s.author = "Scott Chacon"
    s.email = "[email protected]"
    s.summary = "A simple gem for using Git in Ruby code."
    
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <[email protected]>
Date: Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test
    
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index a0a60ae..47c6340 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -18,8 +18,3 @@ class SimpleGit
    end
 end
-
-if $0 == __FILE__
- git = SimpleGit.new
- puts git.show
-end
 No newline at end of file
View Code

--stat

-p可以也可以显示每次commit变化,问题就是显示信息太详细了,文件修改了什么都会显示出来。如果修改了很多文件,-p会输出大量内容。--stat可以显示每次提交的简略的统计信息。--stat 选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。 在每次提交的最后还有一个总结。

技术分享图片
$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <[email protected]>
Date: Mon Mar 17 21:52:11 2008 -0700

    changed the version number
    
 Rakefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <[email protected]>
Date: Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test
    
 lib/simplegit.rb | 5 -----
 1 file changed, 5 deletions(-)
 
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <[email protected]>
Date: Sat Mar 15 10:31:28 2008 -0700

    first commit
    
README | 6 ++++++
Rakefile | 23 +++++++++++++++++++++++
lib/simplegit.rb | 25 +++++++++++++++++++++++++
3 files changed, 54 insertions(+)
View Code

--pretty

--pretty可以指定使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。

--pretty=oneline 将每个提交放在一行显示,查看的提交数很大时非常有用。

技术分享图片View Code

--pretty=short,full 和 fuller 展示的信息或多或少有些不同。

--pretty=format可以定制要显示的记录格式。这样的输出对后期提取分析格外有用 。

技术分享图片
$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
085bb3b - Scott Chacon, 6 years ago : removed unnecessary test
a11bef0 - Scott Chacon, 6 years ago : first commit
View Code

--pretty=format 常用的选项 列出了常用的格式占位符写法及其代表的意义。

技术分享图片

作者:指的是实际作出修改的人

提交者:指的是最后将此工作成果提交到仓库的人。

举例:当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是作者,而那个核心成员就是提交者。

 --graph

显示 ASCII 图形表示的分支合并历史。这个选项常与--pretty=format 或 --pretty=oneline 连用。

技术分享图片
$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch master of git://github.com/dustin/grit
|| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
* 11d191e Merge branch defunkt into local
View Code

限制输出选项

技术分享图片

举例:查看 Git 仓库中,2008 年 10 月期间,Junio Hamano 提交的但未合并的测试文件,可以用下面的查询命令:

技术分享图片
$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01"     --before="2008-11-01" --no-merges -- t/
5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API
f563754 - demonstrate breakage of detached checkout with symbolic link
HEAD
d1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths
51a94af - Fix "checkout --track -b newbranch" on detached HEAD
b0ad11e - pull: allow "git pull origin $something:$current_branch" into an
unborn branch
View Code

 

 

 

以上是关于git命令——git log的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )

GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )

git 命令 查看历史提交 git log