Skip to content

git-rev-list

按逆时间顺序列出提交对象。

概要

bash
'git rev-list' [<options>] <commit>... [--] [<path>...]

描述

列出通过跟踪给定提交的 parent 链接可达的提交,但排除前面带有 '{caret}' 的提交可达的提交。默认按逆时间顺序输出。

您可以将其视为集合操作。从命令行上给出的任何提交可达的提交形成一个集合,然后从前置 '{caret}' 的提交可达的提交从该集合中减去。剩余的提交就是命令输出的内容。

特殊符号 <commit1>..<commit2> 可用作 ^<commit1> <commit2> 的简写。另一个特殊符号 <commit1>...<commit2> 对合并很有用,结果提交集是两个操作数的对称差异。

rev-list 是一个重要的 Git 命令,因为它提供了构建和遍历提交祖先图的能力。

选项

提交限制

  • -<number>, -n <number>, --max-count=<number>:将输出限制为 <number> 个提交。
  • --skip=<number>:在开始显示提交输出之前跳过 <number> 个提交。
  • --since=<date>, --after=<date>:显示比 <date> 更新的提交。
  • --since-as-filter=<date>:显示所有比 <date> 更新的提交。
  • --until=<date>, --before=<date>:显示比 <date> 更旧的提交。
  • --author=<pattern>--committer=<pattern>:将提交输出限制为作者/提交者头行匹配 <pattern> 正则表达式的提交。
  • --grep-reflog=<pattern>:将提交输出限制为 reflog 条目匹配 <pattern> 的提交。
  • --grep=<pattern>:将提交输出限制为日志消息匹配 <pattern> 的提交。
  • --all-match:将提交输出限制为匹配所有给定 --grep 的提交。
  • --invert-grep:将提交输出限制为日志消息不匹配的提交。
  • -i, --regexp-ignore-case:匹配正则表达式限制模式时不区分大小写。
  • --basic-regexp:将限制模式视为基本正则表达式(默认)。
  • -E, --extended-regexp:将限制模式视为扩展正则表达式。
  • -F, --fixed-strings:将限制模式视为固定字符串。
  • -P, --perl-regexp:将限制模式视为 Perl 兼容正则表达式。
  • --remove-empty:当给定路径从树中消失时停止。
  • --merges:仅打印合并提交。
  • --no-merges:不打印具有多个父提交的提交。
  • --min-parents=<number>--max-parents=<number>:显示至少(或最多)具有那么多父提交的提交。
  • --first-parent:在发现合并提交时,仅跟踪第一个父提交。
  • --exclude-first-parent-only:在发现要排除的提交时,仅跟踪第一个父提交。
  • --maximal-only:将输出提交限制为不可从修订范围中任何其他提交可达的提交。
  • --not:反转所有后续修订说明符的 '{caret}' 前缀的含义。
  • --all:假装 refs/ 中的所有引用以及 HEAD 都列在命令行上。
  • --branches[=<pattern>]--tags[=<pattern>]--remotes[=<pattern>]:假装所有引用都列在命令行上。
  • --glob=<glob-pattern>:假装所有匹配 shell glob 的引用都列在命令行上。
  • --exclude=<glob-pattern>:不包含匹配的引用。
  • --exclude-hidden=(fetch|receive|uploadpack):不包含会被隐藏的引用。
  • --reflog:假装 reflog 中提到的所有对象都列在命令行上。
  • --alternate-refs:假装所有备用仓库的引用提示都列在命令行上。
  • --single-worktree:强制仅检查当前工作树。
  • --ignore-missing:在输入中看到无效对象名称时,假装未给出该输入。
  • --stdin:除了从命令行获取参数外,还从标准输入读取。
  • --quiet:不向标准输出打印任何内容。
  • --disk-usage:打印所选提交或对象使用的磁盘存储字节总和。
  • --cherry-mark:用 = 标记等效提交,用 + 标记非等效提交。
  • --cherry-pick:省略引入与另一侧相同更改的提交。
  • --left-only--right-only:仅列出对称差异相应一侧的提交。
  • --cherry--right-only --cherry-mark --no-merges 的同义词。
  • -g, --walk-reflogs:遍历 reflog 条目而不是提交祖先链。
  • --merge:显示在 HEAD...<other> 范围内接触冲突路径的提交。
  • --boundary:输出排除的边界提交。

历史简化

  • <paths>:选择修改给定路径的提交。
  • --simplify-by-decoration:选择被某些分支或标签引用的提交。
  • --show-pulls:包含默认模式中的所有提交,还包括不是 TREESAME 到第一个父提交但 TREESAME 到后续父提交的合并提交。
  • --full-history:与默认模式相同,但不修剪某些历史。
  • --dense:仅显示选定的提交。
  • --sparse:显示简化历史中的所有提交。
  • --simplify-merges:从结果历史中删除一些不必要的合并。
  • --ancestry-path[=<commit>]:将显示的提交限制为 <commit> 的祖先或后代。

提交排序

  • --date-order:按提交时间戳顺序显示。
  • --author-date-order:按作者时间戳顺序显示。
  • --topo-order:避免显示来自多个历史行的混合提交。
  • --reverse:以相反顺序输出选定的提交。

提交格式化

  • --pretty[=<format>]--format=<format>:以给定格式漂亮打印提交日志的内容。
  • --abbrev-commit:显示唯一命名对象的前缀。
  • --no-abbrev-commit:显示完整的 40 字节十六进制提交对象名称。
  • --oneline--pretty=oneline --abbrev-commit 的简写。
  • --encoding=<encoding>:告诉命令以用户首选的编码重新编码提交日志消息。
  • --expand-tabs=<n>:在日志消息中执行制表符扩展。
  • --notes[=<ref>]:显示注释提交的笔记。
  • --no-notes:不显示笔记。
  • --show-signature:通过将签名传递给 gpg --verify 来检查签名提交对象的有效性。
  • --relative-date--date=relative 的同义词。
  • --date=<format>:设置日期格式。

Git

git 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布