简体中文 ▾ 主题 ▾ 最新版本 ▾ git-reflog 最后更新于 2.51.1

名称

git-reflog - 管理引用日志(reflog)信息

概要

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

描述

此命令用于管理引用日志中记录的信息。

引用日志(Reference logs,简称 "reflogs")记录了本地仓库中分支顶端和其他引用的更新时间。引用日志在各种 Git 命令中非常有用,用于指定引用的旧值。例如,HEAD@{2} 表示“HEAD 在两次移动前的位置”,master@{one.week.ago} 表示“一周前 master 在此本地仓库中指向的位置”,依此类推。详见 gitrevisions[7]

该命令接受多种子命令,并根据子命令提供不同的选项。

"show" 子命令(在没有子命令时也是默认选项)显示命令行中提供的引用(或默认显示 HEAD)的日志。引用日志涵盖了所有最近的操作,此外 HEAD 引用日志还记录了分支切换。git reflog showgit log -g --abbrev-commit --pretty=oneline 的别名;有关更多信息,请参见 git-log[1]

"list" 子命令列出所有具有相应引用日志的引用。

"exists" 子命令检查某个引用是否有引用日志。如果引用日志存在,它以状态码零退出;如果不存在,则以非零状态码退出。

"write" 子命令向给定引用的引用日志中写入一条单独的条目。此新条目将附加到引用日志中,从而成为最新的条目。引用名称必须是全称。旧的和新的对象 ID 都不能简写,并且必须指向现有的对象。引用日志消息会被规范化处理。

"delete" 子命令从引用日志中删除单个条目,但不会删除引用日志本身。其参数必须是 *准确的* 条目(例如“git reflog delete master@{2}”)。此子命令通常也不由终端用户直接使用。

"drop" 子命令会完全移除指定引用的引用日志。这与 "expire" 和 "delete" 不同,后两者可用于删除引用日志条目,但不能删除引用日志本身。

"expire" 子命令用于修剪旧的引用日志条目。早于 expire 时间的条目,或者早于 expire-unreachable 时间且从当前顶端不可达的条目,将从引用日志中移除。这通常不直接由最终用户使用——相反,请参阅 git-gc[1]

选项

用于 show 的选项

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

用于 delete 的选项

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

用于 drop 的选项

--all

删除所有工作区中所有引用的引用日志。

--single-worktree

默认情况下,当指定 --all 时,所有工作树的引用日志都会被删除。此选项将处理范围限制为仅限当前工作树的引用日志。

用于 expire 的选项

--all

处理所有引用的引用日志。

--single-worktree

默认情况下,当指定 --all 时,会处理所有工作树的引用日志。此选项将处理范围限制为仅限当前工作树的引用日志。

--expire=<时间>

修剪早于指定时间的条目。如果未指定此选项,则过期时间取自配置设置 gc.reflogExpire,其默认值为 90 天。--expire=all 无论时间早晚都会修剪条目;--expire=never 关闭对可达条目的修剪(但请参见 --expire-unreachable)。

--expire-unreachable=<时间>

修剪早于 <时间> 且从当前分支顶端不可达的条目。如果未指定此选项,则过期时间取自配置设置 gc.reflogExpireUnreachable,其默认值为 30 天。--expire-unreachable=all 无论时间早晚都会修剪不可达条目;--expire-unreachable=never 关闭对不可达条目的早期修剪(但请参见 --expire)。

--updateref

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

--rewrite

如果某个引用日志条目的前驱条目被修剪,则调整其“旧” SHA-1 值,使其等于现在排在它之前的条目的“新” SHA-1 字段值。

--stale-fix

修剪任何指向“损坏提交”的引用日志条目。损坏提交是指无法从任何引用顶端到达,且直接或间接引用了缺失的提交、树或 blob 对象的提交。

此计算涉及遍历所有可达对象,也就是说,它的开销与 *git prune* 相同。它主要用于修复因使用旧版 Git 进行垃圾回收而导致的损坏,旧版 Git 不会保护引用日志所引用的对象。

-n
--dry-run

不实际修剪任何条目;只显示哪些条目将被修剪。

--verbose

在屏幕上打印额外信息。

GIT

Git[1] 套件的一部分