Git
英语 ▾ 主题 ▾ 最新版本 ▾ 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