設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.50.1 無更改
-
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
概要
git reflog [show] [<log-options>] [<ref>] git reflog list 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 drop [--all [--single-worktree] | <refs>…] git reflog exists <ref>
描述
此命令用於管理 reflog 中記錄的資訊。
引用日誌,或稱“reflog”,記錄了本地倉庫中分支和其他引用的尖端何時被更新。reflog 在各種 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 的引用。
“expire”子命令會清除舊的 reflog 條目。早於 expire
時間的條目,或早於 expire-unreachable
時間且從當前分支尖端無法訪問的條目,都將從 reflog 中刪除。這通常不被終端使用者直接使用——請參閱git-gc[1]。
“delete”子命令從 reflog 中刪除單個條目,但不會刪除 reflog 本身。其引數必須是一個精確的條目(例如“git
reflog
delete
master@{2}
”)。此子命令通常也不被終端使用者直接使用。
“drop”子命令完全刪除指定引用的 reflog。這與“expire”和“delete”不同,後者都可以用於刪除 reflog 條目,但不能刪除 reflog 本身。
“exists”子命令檢查引用是否有 reflog。如果 reflog 存在,則以零狀態退出;如果不存在,則以非零狀態退出。
選項
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 進行垃圾回收而導致的損壞,舊版本 Git 不會保護 reflog 引用的物件。
- -n
- --dry-run
-
不實際清除任何條目;只顯示哪些條目將被清除。
- --verbose
-
在螢幕上列印額外資訊。