English ▾ 主题 ▾ 最新版本 ▾ git-reflog 上次更新于 2.45.0

名称

git-reflog - 管理 reflog 信息

概要

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

描述

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

引用日志,或“reflog”,记录了分支和其他引用的顶端在本地仓库中何时更新。 Reflog 在各种 Git 命令中很有用,可以指定引用的旧值。 例如,HEAD@{2} 表示“HEAD 在两次移动前的位置”,master@{one.week.ago} 表示“master 在此本地仓库中一周前指向的位置”,等等。 有关更多详细信息,请参见 gitrevisions[7]

该命令采用各种子命令,并且根据子命令具有不同的选项

“show”子命令(也是默认子命令,如果没有其他子命令)显示命令行中提供的引用的日志(或者默认情况下为 HEAD)。 reflog 涵盖所有最近的操作,此外,HEAD reflog 记录分支切换。 git reflog showgit log -g --abbrev-commit --pretty=oneline 的别名; 有关更多信息,请参见 git-log[1]

“list”子命令列出所有具有相应 reflog 的引用。

“expire”子命令修剪较旧的 reflog 条目。 早于 expire 时间的条目,或者早于 expire-unreachable 时间并且无法从当前顶端访问的条目,将从 reflog 中删除。 这通常不直接由最终用户使用 — 而是参见 git-gc[1]

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

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

选项

show 的选项

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

expire 的选项

--all

处理所有引用的 reflog。

--single-worktree

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

--expire=<time>

修剪早于指定时间的条目。 如果未指定此选项,则到期时间取自配置设置 gc.reflogExpire,该设置又默认为 90 天。 --expire=all 修剪所有条目,无论其存在时间如何; --expire=never 关闭可访问条目的修剪(但请参见 --expire-unreachable)。

--expire-unreachable=<time>

修剪早于 <time> 且无法从分支的当前顶端访问的条目。 如果未指定此选项,则到期时间取自配置设置 gc.reflogExpireUnreachable,该设置又默认为 30 天。 --expire-unreachable=all 修剪所有无法访问的条目,无论其存在时间如何; --expire-unreachable=never 关闭无法访问条目的早期修剪(但请参见 --expire)。

--updateref

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

--rewrite

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

--stale-fix

修剪指向“损坏提交”的所有 reflog 条目。 损坏的提交是指无法从任何引用提示访问的提交,并且直接或间接引用丢失的提交、树或 blob 对象。

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

-n
--dry-run

实际上不修剪任何条目; 仅显示将要修剪的内容。

--verbose

在屏幕上打印额外信息。

delete 的选项

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

GIT

属于 git[1] 套件的一部分

scroll-to-top