設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
-
2.52.0
2025-11-17
- 2.49.1 → 2.51.2 無更改
-
2.49.0
2025-03-14
- 2.48.1 → 2.48.2 無更改
- 2.48.0 無更改
- 2.47.1 → 2.47.3 無更改
-
2.47.0
2024-10-06
- 2.46.1 → 2.46.4 無更改
-
2.46.0
2024-07-29
概要
gitrefsmigrate--ref-format=<format> [--no-reflog] [--dry-run]gitrefsverify[--strict] [--verbose]gitrefslist[--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>...)]gitrefsexists<ref>gitrefsoptimize[--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> 的以下選項是特定於此命令的
<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>* 欄位必須是always、never或auto之一(如果 *<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) 取消註冊。
這些限制將來可能會解除。