Git. Day 2.


  上一篇是在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  #作者的名字和电子邮件地址
Date:   Mon Mar 17 21:52:11 2008 -0700 #提交时间

 changed the verison number #提交说明

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon 
Date:   Sat Mar 15 16:40:33 2008 -0700

removed unnecessary test code

commit a11bef06a3f659402fe7563abf99ad00de2209e6 
Author: Scott Chacon 
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  #提交者的用户名邮箱
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     =   "[email protected]"
 s.summary   =   "A simple gem for using Git in Ruby code."

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon 
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 
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 
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.)