设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.50.1 无更改
-
2.50.0
2025-06-16
- 2.45.1 → 2.49.1 无更改
-
2.45.0
2024-04-29
- 2.39.1 → 2.44.4 无更改
-
2.39.0
2022-12-12
- 2.37.4 → 2.38.5 无更改
-
2.37.3
2022-08-30
- 2.35.1 → 2.37.2 无更改
-
2.35.0
2022-01-24
- 2.20.1 → 2.34.8 无更改
-
2.20.0
2018-12-09
- 2.17.0 → 2.19.6 无更改
-
2.16.6
2019-12-06
- 2.7.6 → 2.15.4 无更改
-
2.6.7
2017-05-05
- 2.5.6 无更改
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 无更改
-
2.0.5
2014-12-17
概要
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
show
是 git
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 存在,则以零状态退出;如果不存在,则以非零状态退出。
选项
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
-
在屏幕上打印额外信息。