git-reflog

原文: https://git-scm.com/docs/git-reflog

名称

git-reflog - 管理reflog信息

概要

  1. git reflog <subcommand> <options>

描述

该命令采用各种子命令,并根据子命令使用不同的选项:

  1. git reflog [show] [log-options] [<ref>]
  2. git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
  3. [--rewrite] [--updateref] [--stale-fix]
  4. [--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>…​]
  5. git reflog delete [--rewrite] [--updateref]
  6. [--dry-run | -n] [--verbose] ref@{specifier}…​
  7. git reflog exists <ref>

引用日志或“reflogs”记录在本地存储库中更新分支和其他引用的提示时。 Reflog在各种Git命令中很有用,用于指定引用的旧值。例如,HEAD@{2}表示“HEAD过去两次移动的地方”,master@{one.week.ago}表示“主要用于指向一周前的本地存储库”,依此类推。有关详细信息,请参阅 gitrevisions [7]

此命令管理reflog中记录的信息。

“show”子命令(在没有任何子命令的情况下也是默认命令)显示命令行中提供的引用的日志(或默认情况下为HEAD)。 reflog包含所有最近的操作,此外HEAD reflog记录分支切换。 git reflog showgit log -g --abbrev-commit --pretty=oneline的别名;有关详细信息,请参阅 git-log [1]

“expire”子命令修剪旧的reflog条目。超过expire时间的条目,或者早于expire-unreachable时间且当前提示无法访问的条目将从reflog中删除。这通常不会被最终用户直接使用 - 相反,请参阅 git-gc [1]

“delete”子命令从reflog中删除单个条目。其参数必须是精确条目(例如“git reflog delete master@{2}”)。最终用户通常也不直接使用此子命令。

“exists”子命令检查ref是否具有reflog。如果reflog存在则退出为零状态,如果不存在则退出为非零状态。

OPTIONS

show的选项

git reflog show接受git log接受的任何选项。

expire的选项

  1. --all

处理所有引用的reflog。

  1. --single-worktree

默认情况下,指定--all时,将处理来自所有工作树的reflog。此选项仅将处理限制为来自当前工作树的reflog。

  1. --expire=<time>

修剪早于指定时间的条目。如果未指定此选项,则到期时间取自配置设置gc.reflogExpire,后者默认为90天。 --expire=all修剪条目,不论其年龄; --expire=never关闭可达条目的修剪(但参见--expire-unreachable)。

  1. --expire-unreachable=<time>

修剪早于&lt;time&gt;的条目,无法从分支的当前提示访问。如果未指定此选项,则到期时间取自配置设置gc.reflogExpireUnreachable,后者默认为30天。 --expire-unreachable=all修剪无法访问的条目,无论其年龄如何; --expire-unreachable=never关闭无法访问的条目的早期修剪(但参见--expire)。

  1. --updateref

如果前一个顶部条目被修剪,则更新对顶部reflog条目的值的引用(即< ref> @ {0})。 (符号引用会忽略此选项。)

  1. --rewrite

如果修剪了reflog条目的前任,则将其“旧”SHA-1调整为等于其前面的条目的“新”SHA-1字段。

  1. --stale-fix

修剪任何指向“已损坏的提交”的reflog条目。破坏的提交是无法从任何参考提示访问的提交,它直接或间接地引用缺少的提交,树或blob对象。

该计算涉及遍历所有可到达对象,即它具有与 git prune 相同的成本。它主要用于修复使用旧版Git进行垃圾收集而导致的损坏,这些版本不保护reflog所引用的对象。

  1. -n
  1. --dry-run

不要删除任何条目;只是展示会被修剪的东西。

  1. --verbose

在屏幕上打印额外信息。

delete的选项

git reflog delete接受选项--updateref--rewrite-n--dry-run--verbose,其含义与expire使用时的含义相同。

GIT

部分 git [1] 套件