git reflog
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涵盖了所有最近的操作,另外还有HEAD
reflog记录分支交换。git reflog show
是别名git log -g --abbrev-commit --pretty=oneline
; 有关更多信息,请参阅git-log [1]。
“expire
”子命令修剪旧的reflog条目。从比较日志中删除expire
比expire-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
。