設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.1 → 2.52.0 無更改
-
2.43.0
2023-11-20
- 2.36.1 → 2.42.4 無變更
-
2.36.0
2022-04-18
- 2.1.4 → 2.35.8 無更改
-
2.0.5
2014-12-17
概要
git checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<string>] [--stage=<number>|all] [--temp] [--ignore-skip-worktree-bits] [-z] [--stdin] [--] [<file>…]
選項
- -u
- --index
-
更新索引檔案中已檢出條目的統計資訊。
- -q
- --quiet
-
如果檔案存在或不在索引中,則保持安靜
- -f
- --force
-
強制覆蓋現有檔案
- -a
- --all
-
檢出索引中的所有檔案,但排除那些設定了 skip-worktree 位的檔案(參見
--ignore-skip-worktree-bits)。不能與顯式檔名一起使用。 - -n
- --no-create
-
不要檢出新檔案,只重新整理已檢出的檔案。
- --prefix=<string>
-
建立檔案時,在檔名前加上 <string>(通常是包含末尾斜槓的目錄)
- --stage=<number>|all
-
不是檢出未合併的條目,而是從指定的階段複製檔案。<number> 必須在 1 到 3 之間。注意:--stage=all 自動包含 --temp。
- --temp
-
不是將檔案複製到工作目錄,而是將內容寫入臨時檔案。臨時檔名關聯將寫入 stdout。
- --ignore-skip-worktree-bits
-
檢出所有檔案,包括那些設定了 skip-worktree 位的檔案。
- --stdin
-
不是從命令列獲取路徑列表,而是從標準輸入讀取路徑列表。預設情況下,路徑由 LF 分隔(即每行一個路徑)。
- -z
-
僅在
--stdin有效時才有意義;路徑由 NUL 字元而不是 LF 分隔。 - --
-
不再將任何後續引數解釋為選項。
標誌的順序曾經很重要,但現在不再是了。
僅執行 git checkout-index 不執行任何操作。您可能想要 git checkout-index -a。如果您想強制執行,您需要 git checkout-index -f -a。
直觀性不是目標。可重複性才是。命令列“無引數表示無操作”的原因是,從指令碼中您可以執行
$ find . -name '*.h' -print0 | xargs -0 git checkout-index -f --
這將用其快取的副本替換所有現有的 *.h 檔案。如果空命令列意味著“全部”,那麼這將強制重新整理索引中的所有內容,但這並非目的。但是,由於 git checkout-index 接受 --stdin,因此使用以下命令會更快
$ find . -name '*.h' -print0 | git checkout-index -f -z --stdin
-- 只是一個好習慣,當您知道後面的都是檔名時;它可以避免檔名(例如 -a)引起的問題。在指令碼中使用 -- 可能是一個好策略。
使用 --temp 或 --stage=all
當使用 --temp(或 --stage=all 暗示)時,git checkout-index 將為每個要檢出的索引條目建立一個臨時檔案。索引不會用統計資訊進行更新。如果呼叫者需要所有未合併條目的所有階段,以便外部合併工具可以處理這些未合併的檔案,則這些選項可能很有用。
將向 stdout 寫入一個列表,提供臨時檔名與跟蹤路徑名的關聯。列表格式有兩種變體
-
tempname TAB path RS
第一種格式是在省略
--stage或它不是--stage=all時使用的。欄位 tempname 是包含檔案內容的臨時檔名,path 是索引中的跟蹤路徑名。只輸出請求的條目。 -
stage1temp SP stage2temp SP stage3tmp TAB path RS
第二種格式是在使用
--stage=all時使用的。三個階段的臨時欄位(stage1temp、stage2temp、stage3temp)列出了索引中階段條目的臨時檔名,如果沒有階段條目,則為.。只有階段 0 條目的路徑將始終從輸出中省略。
在這兩種格式中,RS(記錄分隔符)預設為換行符,但如果命令列上傳遞了 -z,則為 null 位元組。臨時檔名始終是安全的字串;它們永遠不會包含目錄分隔符或空格字元。路徑欄位始終相對於當前目錄,臨時檔名始終相對於頂級目錄。
如果複製到臨時檔案的物件是符號連結,則連結的內容將寫入一個普通檔案。由終端使用者或 Porcelain 來利用此資訊。
示例
- 僅更新和重新整理已檢出的檔案
-
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
- 使用 git checkout-index “匯出整個樹”
-
字首功能基本上使 git checkout-index 易於用作“匯出為樹”功能。只需將所需的樹讀入索引,然後執行
$ git checkout-index --prefix=git-export-dir/ -a
gitcheckout-index將“匯出”索引到指定目錄。最後的斜槓很重要。匯出的名稱只是簡單地加上指定字串作為字首。與以下示例進行對比。
- 匯出帶字首的檔案
-
$ git checkout-index --prefix=.merged- Makefile
這將把 `Makefile` 的當前快取副本檢出到檔案 `.merged-Makefile`。