设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.51.2 → 2.52.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>…]
描述
此命令管理在 reflog 中记录的信息。
引用日志,或称“reflogs”,记录本地仓库中分支和其他引用的尖端更新的时间。Reflogs 在各种 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 的引用。
“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]。
选项
delete 的选项
git reflog delete 接受 --updateref、--rewrite、-n、--dry-run 和 --verbose 选项,其含义与在与 expire 一起使用时相同。
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-
在屏幕上打印额外信息。