Git
English ▾ 主題 ▾ 最新版本 ▾ git-reflog 最後更新於 2.45.0

名稱

git-reflog - 管理 reflog 資訊

概要

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 exists <ref>

描述

此命令管理記錄在 reflog 中的資訊。

參考日誌,或稱為 "reflog",會記錄分支和其他參考的頂端在本地儲存庫中更新的時間。Reflog 在各種 Git 命令中很有用,可以指定參考的舊值。例如,HEAD@{2} 表示「HEAD 在兩次移動之前的位置」,master@{one.week.ago} 表示「master 在這個本地儲存庫中一週前指向的位置」,等等。更多詳細資訊請參閱 gitrevisions[7]

此命令接受各種子命令,以及根據子命令的不同選項

"show" 子命令(在沒有任何子命令的情況下也是預設值)會顯示命令列中提供的參考日誌(或預設為 HEAD)。Reflog 涵蓋所有最近的操作,此外,HEAD reflog 會記錄分支切換。git reflog showgit log -g --abbrev-commit --pretty=oneline 的別名;更多資訊請參閱 git-log[1]

"list" 子命令會列出所有有對應 reflog 的參考。

"expire" 子命令會修剪較舊的 reflog 條目。超過 expire 時間的條目,或超過 expire-unreachable 時間且無法從目前頂端存取的條目,會從 reflog 中移除。這通常不是最終使用者直接使用的,而是請參閱 git-gc[1]

"delete" 子命令會從 reflog 中刪除單個條目。其參數必須是確切的條目(例如 "git reflog delete master@{2}")。此子命令通常也不是最終使用者直接使用的。

"exists" 子命令會檢查參考是否有 reflog。如果 reflog 存在,則以零狀態退出,如果不存在,則以非零狀態退出。

選項

show 的選項

git reflog show 接受 git log 接受的任何選項。

expire 的選項

--all

處理所有參考的 reflog。

--single-worktree

預設情況下,當指定 --all 時,會處理來自所有工作樹的 reflog。此選項會將處理限制為僅來自目前工作樹的 reflog。

--expire=<時間>

修剪比指定時間更舊的條目。如果未指定此選項,則到期時間取自組態設定 gc.reflogExpire,該設定預設為 90 天。--expire=all 會修剪所有條目,無論其時間長短;--expire=never 會關閉可存取條目的修剪(但請參閱 --expire-unreachable)。

--expire-unreachable=<時間>

修剪比 <時間> 更舊且無法從分支目前頂端存取的條目。如果未指定此選項,則到期時間取自組態設定 gc.reflogExpireUnreachable,該設定預設為 30 天。--expire-unreachable=all 會修剪所有無法存取的條目,無論其時間長短;--expire-unreachable=never 會關閉無法存取條目的早期修剪(但請參閱 --expire)。

--updateref

如果修剪了先前的頂部條目,則將參考更新為頂部 reflog 條目的值(即 <ref>@{0})。(此選項會忽略符號參考。)

--rewrite

如果修剪了 reflog 條目的前一個條目,請調整其 "old" SHA-1,使其等於現在位於其之前的條目的 "new" SHA-1 欄位。

--stale-fix

修剪任何指向「損壞的提交」的 reflog 條目。損壞的提交是無法從任何參考頂端存取,並直接或間接參考遺失的提交、樹狀結構或 blob 物件的提交。

此計算涉及遍歷所有可存取的物件,也就是說,其成本與 git prune 相同。它主要用於修復使用舊版 Git 進行垃圾收集所造成的損壞,這些舊版 Git 不會保護 reflog 參考的物件。

-n
--dry-run

不要實際修剪任何條目;只需顯示將被修剪的內容。

--verbose

在螢幕上列印額外資訊。

delete 的選項

git reflog delete 接受選項 --updateref--rewrite-n--dry-run--verbose,其含義與使用 expire 時相同。

GIT

屬於 git[1] 套件的一部分

scroll-to-top