上一篇是在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中已经找到了解决的方案。
先到这。
网友评论