簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-reflog 最後更新於 2.50.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 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 showgit 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 存在,則以零狀態退出;如果不存在,則以非零狀態退出。

選項

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 進行垃圾回收而導致的損壞,舊版本 Git 不會保護 reflog 引用的物件。

-n
--dry-run

不實際清除任何條目;只顯示哪些條目將被清除。

--verbose

在螢幕上列印額外資訊。

delete 的選項

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

drop 的選項

--all

從所有工作區刪除所有引用的 reflog。

--single-worktree

預設情況下,當指定 --all 時,會刪除所有工作區的 reflog。此選項將處理範圍限制為僅當前工作區的 reflog。

GIT

Git[1] 套件的一部分

scroll-to-top