非常教程

Git参考手册

管理 | Administration

git reflog

命名

git-reflog - 管理reflog信息

概要

git reflog <subcommand> <options>

描述

该命令根据子命令采用各种子命令和不同的选项:

git reflog [show] [log-options] [<ref>]
git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
        [--rewrite] [--updateref] [--stale-fix]
        [--dry-run] [--verbose] [--all | <refs>…​]
git reflog delete [--rewrite] [--updateref]
        [--dry-run] [--verbose] ref@{specifier}…​
git reflog exists <ref>

引用日志或“reflogs”记录分支的提示和其他引用在本地存储库中更新的时间。Reflog在各种Git命令中很有用,可以指定引用的旧值。例如,HEAD@{2}意思是“HEAD以前是两次移动的地方”,master@{one.week.ago}意思是“主要用于指向一周前在本地存储库中的位置”,等等。有关更多详细信息,请参阅gitrevisions [7]。

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

“show”子命令(缺省情况下,缺少任何子命令)显示命令行中提供的引用的日志(或HEAD默认情况下)。reflog涵盖了所有最近的操作,另外还有HEADreflog记录分支交换。git reflog show是别名git log -g --abbrev-commit --pretty=oneline; 有关更多信息,请参阅git-log [1]。

“expire”子命令修剪旧的reflog条目。从比较日志中删除expireexpire-unreachable时间早的条目或比时间早且不能从当前提示可达的条目。这通常不会被最终用户直接使用 - 相反,请参阅git-gc [1]。

“删除”子命令从reflog中删除单个条目。它的论据必须是一个exact条目(例如“ git reflog delete master@{2}”)。这个子命令通常也不会被最终用户直接使用。

“exists”子命令检查ref是否有reflog。如果reflog存在,它将以零状态退出,如果不存在则返回非零状态。

选项

show操作

git reflog show accepts any of the options accepted by git log.

expire操作

--all

处理所有引用的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不保护reflog提到的对象。

-n --dry-run

切勿修剪任何条目; 只是显示将被修剪的内容。

--verbose

在屏幕上打印额外的信息。

delete操作

git reflog delete接受选项--updateref--rewrite-n--dry-run,和--verbose,具有相同的含义当它们与用作expire