设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.51.2 → 2.53.0 无变更
-
2.51.1
2025-10-15
- 2.50.1 → 2.51.0 无变更
-
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
概要
gitreflog[show] [<log-options>] [<ref>]gitrefloglistgitreflogexists<ref>gitreflogwrite<ref> <old-oid> <new-oid> <message>gitreflogdelete[--rewrite] [--updateref] [--dry-run|-n] [--verbose] <ref>@{<specifier>}...gitreflogdrop[--all[--single-worktree] | <refs>…]gitreflogexpire[--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 show 是 git 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]。
选项
用于 delete 的选项
git reflog delete 接受选项 --updateref、--rewrite、-n、--dry-run 和 --verbose,其含义与用于 expire 时相同。
用于 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-
在屏幕上打印额外信息。