セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 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
-
インデックスファイル内のチェックアウトされたエントリの stat 情報を更新します。
- -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 (つまり、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 はチェックアウトされるインデックスエントリごとに一時ファイルを作成します。インデックスは stat 情報で更新されません。これらのオプションは、呼び出し元がマージされていないすべてのエントリのすべてのステージを必要とし、マージされていないファイルを外部のマージツールで処理できる場合に役立ちます。
一時ファイル名と追跡されたパス名の関連付けを提供するリストが標準出力に書き込まれます。リスト形式には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 が渡された場合はヌルバイトになります。一時ファイル名は常に安全な文字列です。ディレクトリセパレータや空白文字は含まれません。パスフィールドは常に現在のディレクトリに対して相対的で、一時ファイル名は常に最上位ディレクトリに対して相対的です。
一時ファイルにコピーされるオブジェクトがシンボリックリンクである場合、リンクの内容は通常のファイルに書き込まれます。この情報を利用するかどうかは、エンドユーザーまたはポーセリンに委ねられます。
例
- すでにチェックアウトされているファイルのみを更新およびリフレッシュするには
-
$ 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]スイートの一部