美文网首页
Git. Day 2.

Git. Day 2.

作者: DendiSe7en | 来源:发表于2017-10-17 16:36 被阅读0次

      上一篇是在2016.08.25 时记录的,由于这几天一直忙着其他的事情,停止更新了4篇,我会监督自己通过每篇的篇幅来补上之前的进度。今天想要记录主要是关于Git log这块的学习记录,更多是记录,因为自己所知有限,还没有对某个知识点有比较深的思考。

      log这个部分在我个人认为,是很关键的一个部分,因为git本身就是一个项目管理的工具,而log在管理过程中起到的作用是非常大的。


    关于Git log的内容:

    • 从最简单的 git log 开始
    • $ git log -p -2
    • $ git log -U1 --word-diff
    • $ git log --pretty= XXX
    • $ git log --pretty=oneline
    • $ git log --pretty=short
    • $ git log --pretty=full
    • $ git log --pretty=fuller
    • $ git log --pretty=format:"%h - %an, %ar : %s"
    • $ git log --pretty=XXX --graph
    • Others
    • 限制输出长度
    • 使用图形化工具查阅提交历史

    • 从最简单的 git log 开始

    首先无论你用的是mac OSX 还是 windows 先打开终端。
      找到你的工作目录,把远程仓库中的例子代码clone到本地
     (我这里用的是官方的例子代码)

    #clone远程项目到本地
    $ git clone git://github.com/schacon/simplegit-progit.git
    #然后当然是查看提交日志
    $ git log
    

    这时候我的终端里显示了下面的信息

    # 默认不用任何参数的话,git log会按提交时间列出所有的更新,
    # 最近的更新排在最上面。
    
    commit ca82a6dff817ec66f44342007202690a93763949 #SHA-1 校验
    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 -p -2
        我们已经能看到最简单的log了。接下来如果我想对log显示的内容进行一些筛选,那就可以用到标题里面的这个指令。首先来看下,这里相比之前的 git log 多出了两个部分 (根据官方文档,描述如下)
        -p: 按补丁格式显示每个更新之间的差异。
        -N : 表示仅显示最近的若干条提交。

    现在执行

    $ git log -p -2 #按补丁格式显示每个更新之间的差异,并且仅显示最近的两条提交记录
    

    结果为:

    commit ca82a6dff817ec66f44342007202690a93763949 #SHA-1 校验码
    Author: Scott Chacon <schacon@gmail.com> #提交者的用户名邮箱
    Date:   Mon Mar 17 21:52:11 2008 -0700  #提交时间
    
    changed the verison 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@gmail.com"
     s.summary   =   "A simple gem for using Git in Ruby code."
    
    commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
    Author: Scott Chacon <schacon@gmail.com>
    Date:   Sat Mar 15 16:40:33 2008 -0700
    :
    

    这里需要关注的重点是 "+" 号(增项) 和 "-"(减项) 号里面的内容。


    • $ git log -U1 --word-diff
        如果我们想更进一步从单词的层面来察看差异,那么就可以用到 --word-diff 指令。-U1代表的是 限制上下文的长度为1行
        老规矩,执行:

      $git -U1 --word-diff
      

    显示结果 :

    commit ca82a6dff817ec66f44342007202690a93763949
    Author: Scott Chacon <schacon@gmail.com>
    Date:   Mon Mar 17 21:52:11 2008 -0700
    
    changed the verison number
    
    diff --git a/Rakefile b/Rakefile
    index a874b73..8f94139 100644
    --- a/Rakefile
    +++ b/Rakefile
    @@ -7,3 +7,3 @@ spec = Gem::Specification.new do |s|
    s.name      =   "simplegit"  
    s.version   =   [-"0.1.0"-]{+"0.1.1"+}#显示更改的部分和上下文 
    s.author    =   "Scott Chacon"
    
    commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
    Author: Scott Chacon <schacon@gmail.com>
    Date:   Sat Mar 15 16:40:33 2008 -0700
    
    removed unnecessary test code
    
    diff --git a/lib/simplegit.rb b/lib/simplegit.rb
    index a0a60ae..47c6340 100644
    --- a/lib/simplegit.rb
    

    • $ git log --pretty= XXX
       如果显示的信息比较多,想对log的内容进行更加详细的筛选,就可以使用git log --pretty
        这里--pretty有多个参数,来调整显示内容的多少

      $ git log --pretty=oneline  #把简略的log显示到一行
      $ git log --pretty=full        #显示详细的log
      $ git log --pretty=fuller     #显示更加详细的log
      $ git log --pretty=short     #显示简短的log
      

      这其中还有一个参数比较奇特,format

      $ git log --pretty=format:"%h - %an, %ar : %s"
      
      选项     说明
      %H    提交对象(commit)的完整哈希字串
      %h    提交对象的简短哈希字串
      %T    树对象(tree)的完整哈希字串
      %t    树对象的简短哈希字串
      %P    父对象(parent)的完整哈希字串
      %p    父对象的简短哈希字串
      %an   作者(author)的名字
      %ae   作者的电子邮件地址
      %ad   作者修订日期(可以用 -date= 选项定制格式)
      %ar   作者修订日期,按多久以前的方式显示
      %cn   提交者(committer)的名字
      %ce   提交者的电子邮件地址
      %cd   提交日期
      %cr   提交日期,按多久以前的方式显示
      %s    提交说明
    

    • Others

        选项          说明
        -p                 按补丁格式显示每个更新之间的差异。
        --word-diff       按 word diff 格式显示差异。
        --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(后跟指定格式)。
        --oneline   `--pretty=oneline --abbrev-commit` 的简化用法。
      

    • 限制输出长度
       除了上面的这些,在git中还定义了限制输出长度的指令

        $ git log --since=2.weeks
      
        选项  说明
        -(n)    仅显示最近的 n 条提交
        --since, --after     仅显示指定时间之后的提交。
        --until, --before   仅显示指定时间之前的提交。
        --author             仅显示指定作者相关的提交。
        --committer       仅显示指定提交者相关的提交。
      

    • 使用图形化工具查阅提交历史
        在当前目录下输入gitk会出现图形化管理工具,如果没有正常显示应该是一些组件没有成功安装的原因,我当时也出现了一些小问题,但是在stack overflow中已经找到了解决的方案。

     先到这。

    相关文章

      网友评论

          本文标题:Git. Day 2.

          本文链接:https://www.haomeiwen.com/subject/wuixettx.html