简体中文 ▾ 主题 ▾ 最新版本 ▾ 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>…​]

描述

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

引用日志,或称“reflogs”,记录本地仓库中分支和其他引用的尖端更新的时间。Reflogs 在各种 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 的引用。

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

“write”子命令向给定引用的 reflog 写入单个条目。新条目将追加到 reflog,从而成为最新的条目。引用名称必须是完全限定的。旧的和新的对象 ID 都不能缩写,并且必须指向现有对象。reflog 消息将被规范化。

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

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

“expire”子命令修剪较旧的 reflog 条目。从 reflog 中删除比 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

删除所有工作树中所有引用的 reflog。

--single-worktree

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

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 条目已被修剪,则将引用更新为顶级 reflog 条目(即 <ref>@{0})的值。(此选项对符号引用无效。)

--rewrite

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

--stale-fix

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

此计算涉及遍历所有可达对象,即其成本与 git prune 相同。它主要用于修复使用旧版本 Git 进行垃圾回收所造成的损坏,因为这些旧版本没有保护 reflog 引用的对象。

-n
--dry-run

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

--verbose

在屏幕上打印额外信息。

GIT

Git[1] 套件的一部分