Git rev-list 详解

28 篇文章 0 订阅
3 篇文章 0 订阅

官网:https://git-scm.com/docs/git-rev-list
本文基于官网介绍,结合实例解释 rev-list 的使用

一、功能

按时间倒序列出 commit(即 reverse-list)

二、基本

$ git log
E - (HEAD -> master) addE (10/19/2019 13:31:19) <gdeer>
D - addD (10/18/2019 13:31:19) <gdeer>
C - addC (10/17/2019 13:31:19) <tae>
B - addB (10/16/2019 13:31:19) <gdeer>
A - addA (10/15/2019 13:31:19) <tae>

rev-list
展示 D 及其之后的节点。

$ git rev-list D
D
C
B
A

^
展示 D 及其之后的节点,并去除 B 及其之后的节点。

$ git rev-list D ^B
D
C

..
展示B、D之间的节点:(B, D]
与 D ^B 效果相同。

$ git rev-list B..D
D
C

--not
逆转所有的 ^,即将所有的带 ^ 的转为不带 ^ 的,不带 ^ 的转为带 ^ 的。直到遇到下一个 --not

$ git rev-list D --not ^C B --not A
$ git rev-list D C ^B A
D
C

...
找出两个节点间的差异。

$ git rev-list A...B
相当于
$ git rev-list A B --not $(git merge-base --all A B)

三、限制

--all
输出 HEAD 的节点列表。

$ git rev-list E
$ git rev-list --all
E
D
C
B
A

-<number>
-n <number>
--max-count=<number>
限制输出的数量。

$ git rev-list --all -n 2
E
D

--skip=<number>
跳过开头的几个。

$ git rev-list --all -skip 2
C
B
A

--since=<date>
--after=<date>
只输出指定日期及之后的节点, 可以有多种形式,以下都可。

$ git rev-list --all --since "Thu Oct 17 13:31:19 2019 +0800"
$ git rev-list --all --since "1571290279"
$ git rev-list --all --since "10/17/2019 13:31:19"
E
D
C

--until=<date>
--before=<date>
只输出指定日期及之前的节点。

用法同 --since

--max-age=<timestamp>
--min-age=<timestamp>
只输出指定日期之间的节点,只能是时间戳,可以分开用,也可以合起来。
–max-age 相当于 since
–min-age 相当于 until

$ git rev-list --all --max-age=1571290279
E
D
C

--author=<pattern>
--commiter=<pattern>
只输出指定作者的节点。如果有多个 --author,匹配其中任意一个即可。
是正则匹配,能匹配到就算。

$ git rev-list --all --author=e
E
D
C
B
A

$ git rev-list --all --author=g.*
E
D
B

--grep=<pattern>
只输出commit信息能匹配到的节点,如果有多个 --grep,匹配其中任意一个即可。
当带有 --all-match 时,必须匹配所有的 --grep 才输出

$ git rev-list --all --grep=addE
E

--invert-grep
逆转所有的 --grep,不匹配其中任意一个,才输出

$ git rev-list --all --grep=addE --inver-grep
D
C
B
A

-i
--regexp-ignore-case
在进行正则匹配(author、grep)时,忽略大小写。默认是 --basic-regexp,不忽略大小写。

$ git rev-list --all --grep=adde
无输出
$ git rev-list --all --grep=adde -i
E

-E
--extended-regexp
在进行正则匹配(author、grep)时,使用扩展的正则表达式。
默认是基本的正则表达式

-F
--fixed-strings
在进行正则匹配(author、grep)时,使用固定的字符串进行匹配,而不是正则匹配。

$ git rev-list --all --grep=.*E
E
$ git rev-list --all --grep=.*E -F
无输出

-P
--perl-regexp
在进行正则匹配(author、grep)时,使用兼容 Perl 的正则表达式进行匹配。

--remove-empty
当一个节点消失时停止。

--merges
只输出 merge 的节点,相当于 --min-parents=2

--no-merges
不输出 merge 的节点,相当于 --min-parents=1

--min-parents=<number>
--max-parents=<number>
--no-min-parents
--no-max-parents
输出拥有指定数量的父节点的节点。

--max-parents=1 相当于 --no-merges
--min-parents=2 相当于 --merges
--max-parents=0 输出根节点
--min-parents=3 输出所有交叉节点

--no-min-parents 和 --no-max-parents 会恢复限制至默认状态
相当于 --min-parents=0 和 --max-parents=-1

四、待续

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值