簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-refs 最後更新於 2.52.0

名稱

git-refs - 低階引用訪問

概要

git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]
git refs verify [--strict] [--verbose]
git refs list [--count=<count>] [--shell|--perl|--python|--tcl]
		   [(--sort=<key>)…​] [--format=<format>]
		   [--include-root-refs] [--points-at=<object>]
		   [--merged[=<object>]] [--no-merged[=<object>]]
		   [--contains[=<object>]] [--no-contains[=<object>]]
		   [(--exclude=<pattern>)…​] [--start-after=<marker>]
		   [ --stdin | (<pattern>...)]
git refs exists <ref>
git refs optimize [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]

描述

此命令提供對引用的低階訪問。

命令

migrate

在不同格式之間遷移引用儲存。

verify

驗證引用資料庫的一致性。

list

列出儲存庫中的引用,支援過濾、格式化和排序。此子命令是 git-for-each-ref[1] 的別名,並提供相同的功能。

exists

檢查給定引用是否存在。如果存在,則返回退出程式碼 0;如果不存在,則返回 2;如果查詢引用因除引用缺失以外的其他錯誤而失敗,則返回 1。這不會驗證引用是否解析為實際物件。

optimize

最佳化引用以提高儲存庫效能和減少磁碟使用量。此子命令是 git-pack-refs[1] 的別名,並提供相同的功能。

選項

<code>git refs migrate</code> 的以下選項是特定於此命令的

--ref-format=<format>

將引用儲存遷移到的引用格式。可以是以下之一:

  • files 表示帶有 packed-refs 的鬆散檔案。這是預設值。

  • reftable 表示 reftable 格式。此格式是實驗性的,其內部結構可能會更改。

--dry-run

執行遷移,但不要修改儲存庫。遷移後的引用將寫入一個單獨的目錄,該目錄可以單獨檢查。目錄名稱將在 stdout 上報告。這可用於在執行實際遷移之前仔細檢查遷移是否按預期工作。

--reflog
--no-reflog

選擇是遷移引用日誌資料到新後端,還是丟棄它們。預設值為“--reflog”,表示遷移。

<code>git refs verify</code> 的以下選項是特定於此命令的

--strict

啟用更嚴格的錯誤檢查。這將導致將警告報告為錯誤。請參閱 git-fsck[1]

--verbose

在驗證引用資料庫一致性時,保持詳細輸出。

以下選項特定於 *git refs list*

<pattern>...

如果給出了一個或多個 *<pattern>* 引數,則只顯示與至少一個模式匹配的引用,使用 fnmatch(3) 或字面匹配,後者匹配整個字串或從開頭到斜槓的部分。

--stdin

模式列表從標準輸入讀取,而不是從引數列表中讀取。

--count=<count>

顯示 *<count>* 個引用後停止。

--sort=<key>

按欄位名 *<key>* 排序。在前面加上 - 表示按值降序排序。如果不指定,則使用 refname。您可以多次使用 --sort=<key> 選項,在這種情況下,最後一個鍵成為主鍵。

--format[=<format>]

一個字串,用於內插正在顯示的引用及其指向的物件中的 %(fieldname) 欄位。此外,字串字面量 %% 渲染為 %,而 %xx(其中 xx 是十六進位制數字)渲染為具有十六進位制程式碼 xx 的字元。例如,%00 內插為 *<NUL>*,%09 內插為 *<TAB>*,%0a 內插為 *<LF>*。

未指定時,*<format>* 預設為 %(objectname) SPC %(objecttype) TAB %(refname)

--color[=<when>]

尊重 --format 選項中指定的任何顏色。*<when>* 欄位必須是 alwaysneverauto 之一(如果 *<when>* 缺失,則表現得好像給出了 always)。

--shell
--perl
--python
--tcl

如果給出,則將替換 %(fieldname) 佔位符的字串作為適合指定宿主語言的字串字面量進行引用。這旨在生成一個可以直接“eval”的指令碼。

--points-at=<object>

只列出指向給定物件的引用。

--merged[=<object>]

只列出其尖端可從指定提交(如果未指定則為 HEAD)到達的引用。

--no-merged[=<object>]

只列出其尖端不可從 *<object>*(如果未指定則為 HEAD)到達的引用。

--contains[=<object>]

只列出包含 *<object>*(如果未指定則為 HEAD)的引用。

--no-contains[=<object>]

只列出不包含 *<object>*(如果未指定則為 HEAD)的引用。

--ignore-case

排序和過濾引用時不區分大小寫。

--omit-empty

在格式化引用中,如果格式擴充套件為空字串,則不在其後列印換行符。

--exclude=<excluded-pattern>

如果給出了一個或多個 --exclude 選項,則只顯示不匹配任何 *<excluded-pattern>* 引數的引用。匹配使用與上面 *<pattern>* 相同的規則。

--include-root-refs

列出根引用(HEAD 和偽引用),而不是常規引用。

--start-after=<marker>

透過跳過指定標記(包括該標記)之前的引用來允許分頁輸出。在分頁時,應注意引用可能在呼叫之間被刪除、修改或新增。輸出將只包含按字母順序跟在標記之後的引用。輸出從字母順序上排在標記之後的第一個引用開始。不能與 --sort=<key>--stdin 選項,或用於限制引用的 *<pattern>* 引數一起使用。

以下選項特定於 *git refs optimize*

--all

預設情況下,該命令打包所有已打包的標籤和引用,並保留其他引用不變。這是因為分支預計會被積極開發,並且打包其尖端無助於提高效能。此選項會強制打包所有引用,但隱藏引用、損壞引用和符號引用除外。對於具有許多歷史興趣的分支的儲存庫很有用。

--no-prune

該命令通常在打包 $GIT_DIR/refs 層級下的鬆散引用後將其刪除。此選項指示不執行此操作。

--auto

根據引用資料庫的當前狀態按需打包引用。行為取決於儲存庫使用的引用格式,並且可能會在將來發生變化。

  • "files": 鬆散引用將根據鬆散引用與 packed-refs 檔案大小的比例打包到 packed-refs 檔案中。 packed-refs 檔案越大,就需要越多鬆散引用才能重新打包。

  • "reftable": 表格被壓縮,形成幾何序列。對於兩個表 N 和 N+1,其中 N+1 是較新的,此操作保持 N 至少是 N+1 的兩倍的屬性。只有違反此屬性的表才會被壓縮。

--include <pattern>

根據 glob(7) 模式打包引用。此選項的重複會累加包含模式。如果一個引用同時包含在 --include--exclude 中,則 --exclude 具有優先權。使用 --include 將預設排除所有標籤。符號引用和損壞引用永遠不會被打包。與 --all 一起使用時,它將無效。使用 --no-include 清除並重置模式列表。

--exclude <pattern>

不要打包與給定的 glob(7) 模式匹配的引用。此選項的重複會累加排除模式。使用 --no-exclude 清除並重置模式列表。如果一個引用已經打包,使用 --exclude 包含它不會取消打包。

--all 一起使用時,只打包不匹配任何提供的 --exclude 模式的鬆散引用。

--include 一起使用時,將打包提供給 --include 的引用(減去提供給 --exclude 的引用)。

已知限制

引用格式遷移在其當前形式下有幾項已知限制

  • 目前無法遷移具有工作區的儲存庫。

  • 在遷移過程中,沒有辦法阻止對儲存庫的併發寫入。併發寫入可能導致遷移狀態不一致。使用者應在更高層次上阻止寫入。如果您的儲存庫已註冊為計劃維護,建議先使用 git-maintenance(1) 取消註冊。

這些限制將來可能會解除。

GIT

Git[1] 套件的一部分