設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
- 2.43.1 → 2.50.1 無更改
-
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
-
不將檔案複製到工作目錄,而是將內容寫入臨時檔案。臨時名稱關聯將被寫入標準輸出。
- --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 將為每個正在檢出的索引條目建立一個臨時檔案。索引不會更新統計資訊。如果呼叫者需要所有未合併條目的所有階段,以便外部合併工具可以處理未合併的檔案,則這些選項會很有用。
一個列表將被寫入標準輸出,提供臨時檔名與跟蹤路徑名的關聯。列表格式有兩種變體:
-
臨時檔名 TAB 路徑 RS
第一種格式用於當省略
--stage
或其值不是--stage=all
時。欄位 tempname 是儲存檔案內容的臨時檔名,而 path 是索引中的跟蹤路徑名。只輸出請求的條目。 -
階段1臨時檔案 SP 階段2臨時檔案 SP 階段3臨時檔案 TAB 路徑 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
git
checkout-index
將把索引“匯出”到指定的目錄中。末尾的“/”很重要。匯出的名稱字面上只是在前面加上了指定的字串。將其與以下示例進行對比。
- 帶字首匯出檔案
-
$ git checkout-index --prefix=.merged- Makefile
這將把當前快取的
Makefile
副本檢出到檔案.merged-Makefile
中。