サブモジュールを強制的にチェックアウトする
「サブモジュール」を強制的にチェックアウトします。デフォルトでは、更新する「サブモジュール」の「ワーキングディレクトリー」がダーティーな時や、すでに「コミットID」が指す「コミットオブジェクト」がチェックアウトされている時は、チェックアウトを実行しません。
デフォルトの動作を見てみると、以下のようになります。
1.サブモジュールのブランチの状態
「サブモジュール」のブランチの状態は、以下のようになっています。「HEAD」が指すブランチは「fix」ブランチなので、現在のブランチは「fix」ブランチであることが分かります。
2.サブモジュールのワーキングディレクトリーの状態
「サブモジュール」の「ワーキングディレクトリー」の状態を見てみます。以下のように「fix.txt」ファイルが編集されており、「ワーキングディレクトリー」はダーティーな状態です。
3.サブモジュールをチェックアウト
この状態で、「スーパープロジェクト」から「サブモジュール」をチェックアウトしてみます。以下のように、「サブモジュール」の「ワーキングディレクトリー」がダーティーな状態であるため、チェックアウトに失敗しています。
コマンドの実行例
上記の状態で、「サブモジュール」を強制的にチェックアウトしてみます。「サブモジュール」を強制的にチェックアウトすると、「サブモジュール」の「ワーキングディレクトリー」で行った変更は、全て破棄されるため注意してください。
1.コマンドの実行
コマンドのオプションは、以下のオプションを指定します。ショートオプション | ロングオプション |
---|---|
--f | --force |
「端末」から、以下のコマンドを実行します。
コマンドの詳細は、「サブモジュールを更新するコマンドの説明」を参考にしてください。
ポイントは、赤字の箇所です。
git submodule update --checkout --force
2.コマンドの実行結果
以下のように「サブモジュール」のチェックアウトが行われます。3.サブモジュールのワーキングディレクトリーの状態
「サブモジュール」の「ワーキングディレクトリー」の状態を見てみます。「ワーキングディレクトリー」はクリーンな状態になっています。
4.サブモジュールのブランチの状態
「サブモジュール」のブランチの状態は、以下のようになっています。チェックアウトが行われたため、「HEAD」はチェックアウト前の状態から変更されています。