セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット作成
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.43.1 → 2.49.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
-
マージされていないエントリをチェックアウトする代わりに、指定されたステージからファイルをコピーします。
は1から3の間でなければなりません。注意: --stage=all は自動的に --temp を意味します。 - --temp
-
ファイルをワーキングディレクトリにコピーする代わりに、内容を一時ファイルに書き込みます。一時ファイル名の関連付けは標準出力に書き込まれます。
- --ignore-skip-worktree-bits
-
skip-worktreeビットが設定されているファイルを含め、すべてのファイルをチェックアウトします。
- --stdin
-
コマンドラインからパスのリストを取得する代わりに、標準入力からパスのリストを読み取ります。パスはデフォルトでLF(つまり、1行に1つのパス)で区切られます。
- -z
-
--stdin
と一緒に使用した場合にのみ意味があります。パスはLFではなくNUL文字で区切られます。 - --
-
それ以降の引数をオプションとして解釈しません。
以前はフラグの順序が重要でしたが、現在はそうではありません。
単に 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 はチェックアウトされる各インデックスエントリに対応する一時ファイルを作成します。インデックスは統計情報で更新されません。これらのオプションは、呼び出し元がすべてのマージされていないエントリのすべてのステージを必要とし、マージされていないファイルが外部のマージツールで処理できるようにする場合に役立ちます。
一時ファイル名と追跡されたパス名の関連付けを提供するリストが標準出力に書き込まれます。リストの形式には2つのバリエーションがあります。
-
tempname TAB path RS
最初の形式は、
--stage
が省略された場合、または--stage=all
でない場合に使用されます。フィールドtempname
はファイルの内容を保持する一時ファイル名であり、path
はインデックス内の追跡されたパス名です。要求されたエントリのみが出力されます。 -
stage1temp SP stage2temp SP stage3tmp TAB path RS
2番目の形式は、
--stage=all
が使用された場合に使用されます。3つのステージ一時フィールド (stage1temp, stage2temp, stage3temp) は、インデックスにステージエントリがある場合は一時ファイル名を、ステージエントリがない場合は.
をリストします。ステージ0エントリのみを持つパスは、常に出力から省略されます。
どちらの形式でも RS(レコードセパレータ)はデフォルトでは改行ですが、コマンドラインで -z が渡された場合はヌルバイトになります。一時ファイル名は常に安全な文字列であり、ディレクトリセパレータや空白文字を含むことはありません。path フィールドは常に現在のディレクトリからの相対パスであり、一時ファイル名は常に最上位ディレクトリからの相対パスです。
一時ファイルにコピーされるオブジェクトがシンボリックリンクである場合、リンクの内容は通常のファイルに書き込まれます。この情報の利用はエンドユーザーまたは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
というファイルにチェックアウトされます。
GIT
git[1] スイートの一部