zoukankan      html  css  js  c++  java
  • git命令——git log

    功能

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

    参数

    不带任何参数

    $ git log
    commit ca82a6dff817ec66f44342007202690a93763949
    Author: Scott Chacon <schacon@gee-mail.com>
    Date: Mon Mar 17 21:52:11 2008 -0700
        changed the version number
    
    commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
    Author: Scott Chacon <schacon@gee-mail.com>
    Date: Sat Mar 15 16:40:33 2008 -0700
        removed unnecessary test
    
    commit a11bef06a3f659402fe7563abf99ad00de2209e6
    Author: Scott Chacon <schacon@gee-mail.com>
    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 <schacon@gee-mail.com>
    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 = "schacon@gee-mail.com"
        s.summary = "A simple gem for using Git in Ruby code."
        
    commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
    Author: Scott Chacon <schacon@gee-mail.com>
    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 <schacon@gee-mail.com>
    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 <schacon@gee-mail.com>
    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 <schacon@gee-mail.com>
    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

     

  • 相关阅读:
    UML的现状及未来发展
    终于申请好了Blog。:)
    2004年最后一场雪
    今天开始在乐世安通上班了
    狐狸与兔子问题
    今天上午
    好久没更新了啊,写写近况
    还是得考研啊!
    kettle HTTP client
    国外的一个PIC源代码网站,比较不错,基于HiTech C的。共享一下
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9952350.html
Copyright © 2011-2022 走看看