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 <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中已经找到了解决的方案。

 先到这。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容

  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 4,760评论 0 8
  • git作为时下最流行的代码管理工具,Git权威指南总结了十条喜欢Git的理由: 异地协同工作; 现场版本控制; 重...
    古斟布衣阅读 1,814评论 0 12
  • check cloudwisdom code analysis lines cw-hms-web project ...
    燕京博士阅读 791评论 0 1
  • 四海云游的风,潮湿了夏的温柔。 布谷鸟的呼唤,声声牵扯着乡愁。 流离的心,徜徉在四季的边缘。 青绿的空气里,迷蒙着...
    墨月霜花阅读 167评论 0 0
  • 任一切随它去,做世间自在人 向死而生 当下,我在 禁止,是最强烈的诱惑。匮乏,致最迫切的需求。 美中不足,好事多磨...
    世涂花开阅读 260评论 0 2