# git-reflog
> 原文: [https://git-scm.com/docs/git-reflog](https://git-scm.com/docs/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 | -n] [--verbose] [--all [--single-worktree] | <refs>…?]
git reflog delete [--rewrite] [--updateref]
[--dry-run | -n] [--verbose] ref@{specifier}…?
git reflog exists <ref>
```
引用日志或“reflogs”記錄在本地存儲庫中更新分支和其他引用的提示時。 Reflog在各種Git命令中很有用,用于指定引用的舊值。例如,`HEAD@{2}`表示“HEAD過去兩次移動的地方”,`master@{one.week.ago}`表示“主要用于指向一周前的本地存儲庫”,依此類推。有關詳細信息,請參閱 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 。
此命令管理reflog中記錄的信息。
“show”子命令(在沒有任何子命令的情況下也是默認命令)顯示命令行中提供的引用的日志(或默認情況下為`HEAD`)。 reflog包含所有最近的操作,此外`HEAD` reflog記錄分支切換。 `git reflog show`是`git log -g --abbrev-commit --pretty=oneline`的別名;有關詳細信息,請參閱 [git-log [1]](https://git-scm.com/docs/git-log) 。
“expire”子命令修剪舊的reflog條目。超過`expire`時間的條目,或者早于`expire-unreachable`時間且當前提示無法訪問的條目將從reflog中刪除。這通常不會被最終用戶直接使用 - 相反,請參閱 [git-gc [1]](https://git-scm.com/docs/git-gc) 。
“delete”子命令從reflog中刪除單個條目。其參數必須是_精確_條目(例如“`git reflog delete master@{2}`”)。最終用戶通常也不直接使用此子命令。
“exists”子命令檢查ref是否具有reflog。如果reflog存在則退出為零狀態,如果不存在則退出為非零狀態。
## OPTIONS
### `show`的選項
`git reflog show`接受`git log`接受的任何選項。
### `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進行垃圾收集而導致的損壞,這些版本不保護reflog所引用的對象。
```
-n
```
```
--dry-run
```
不要刪除任何條目;只是展示會被修剪的東西。
```
--verbose
```
在屏幕上打印額外信息。
### `delete`的選項
`git reflog delete`接受選項`--updateref`,`--rewrite`,`-n`,`--dry-run`和`--verbose`,其含義與`expire`使用時的含義相同。
## GIT
部分 [git [1]](https://git-scm.com/docs/git) 套件
- git
- git-config
- git-help
- git-init
- git-clone
- git-add
- git-status
- git-diff
- git-commit
- git-reset
- git-rm
- git-mv
- git-branch
- git-checkout
- git-merge
- git-mergetool
- git-log
- git-stash
- git-tag
- git-worktree
- git-fetch
- git-pull
- git-push
- git-remote
- git-submodule
- git-show
- git-log
- git-shortlog
- git-describe
- git-apply
- git-cherry-pick
- git-rebase
- git-revert
- git-bisect
- git-blame
- git-grep
- gitattributes
- giteveryday
- gitglossary
- githooks
- gitignore
- gitmodules
- gitrevisions
- gittutorial
- gitworkflows
- git-am
- git-format-patch
- git-send-email
- git-request-pull
- git-svn
- git-fast-import
- git-clean
- git-gc
- git-fsck
- git-reflog
- git-filter-branch
- git-instaweb
- git-archive
- git-bundle
- git-daemon
- git-update-server-info
- git-cat-file
- git-check-ignore
- git-checkout-index
- git-commit-tree
- git-count-objects
- git-diff-index
- git-for-each-ref
- git-hash-object
- git-ls-files
- git-merge-base
- git-read-tree
- git-rev-list
- git-rev-parse
- git-show-ref
- git-symbolic-ref
- git-update-index
- git-update-ref
- git-verify-pack
- git-write-tree