简体中文 ▾ 主题 ▾ 最新版本 ▾ git-reflog 最后更新于 2.50.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 drop [--all [--single-worktree] | <refs>…​]
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 中删除单个条目,但不会删除 reflog 本身。其参数必须是一个精确的条目(例如“git reflog delete master@{2}”)。此子命令通常也不被最终用户直接使用。

“drop”子命令完全删除指定引用的 reflog。这与“expire”和“delete”不同,后者都可以用于删除 reflog 条目,但不能删除 reflog 本身。

“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 时相同。

drop 的选项

--all

从所有工作区删除所有引用的 reflog。

--single-worktree

默认情况下,当指定 --all 时,会删除所有工作区的 reflog。此选项将处理范围限制为仅当前工作区的 reflog。

GIT

Git[1] 套件的一部分

scroll-to-top