kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。

サブモジュールを更新するコマンドの説明

  「git submodule」コマンドは、「サブモジュール」を更新することができます。


  サブモジュールのクローンについて

    「サブモジュール」のチェックアウトを行う際、「サブモジュール」がクローンされていない場合は、自動的に「サブモジュール」がクローンされます。

    言い換えると「サブモジュール」のクローンは、「サブモジュール」のチェックアウトで行います。

  どういう時にサブモジュールを更新できるか

    デフォルトでは、「コミットID」と「サブモジュール」の「HEAD」が指す「コミットオブジェクト」が異なる時に、サブモジュールの更新を行うことができます。

    オプションを指定すれば、「コミットID」と「サブモジュール」の「HEAD」が指す「コミットオブジェクト」が同じ場合でも、サブモジュールの更新を行うことができます。

  注意

    「サブモジュール」を更新する前に、更新対象の「サブモジュール」を初期化しておいてください。

    また「サブモジュール」の更新操作は、「スーパープロジェクト」から行ってください。

サブモジュールの更新でできる操作

  サブモジュールの更新では、以下の操作を行うことができます。

  1. サブモジュールのチェックアウト
  2. サブモジュールのマージ
  3. サブモジュールのリベース
  4. ユーザー定義のスクリプトによるサブモジュールの更新

   1.サブモジュールのチェックアウト

    「コミットID」が指す「コミットオブジェクト」をチェックアウトします。


    チェックアウトしたファイル群は、「サブモジュール」の「ワーキングディレクトリー」に展開されます。
    この時、「サブモジュール」の「HEAD」は、「分離したHEAD」になります。

  2.サブモジュールのマージ

    「サブモジュール」の現在のブランチに、「コミットID」が指す「コミットオブジェクト」をマージします。

    例えば、以下のような構成だとします。


    以下のように、マージを行います。



  3.サブモジュールのリベース

    「サブモジュール」の現在のブランチを、「コミットID」が指す「コミットオブジェクト」にリベースします。

    例えば、以下のような構成だとします。


    以下のように、リベースを行います。


  4.ユーザー定義のスクリプトによるサブモジュールの更新

    ユーザーが指定したスクリプトを実行し、スクリプトから「サブモジュール」の更新を行います。

    スクリプトには「コミットID」が渡されるので、スクリプトで必要な処理を行います。

コマンドのフォーマット

  コマンドのフォーマットは以下のようになります。

git submodule <情報出力オプション> update <サブモジュールの更新方法> <オプション> <ワーキングディレクトリーのパス>

情報出力オプション

  情報の出力に関するオプションです。
  いずれのオプションも省略できます。

  エラーメッセージのみ出力する(-q, --quiet)

    このオプションを指定すると、エラーメッセージのみ出力します。

サブモジュールの更新方法

  「サブモジュール」の更新方法を指定します。

  サブモジュールをチェックアウトする(--checkout) 

    「サブモジュール」をチェックアウトします。

    このオプションの使用例は、「サブモジュールをチェックアウトする」を参考にしてください。

  サブモジュールでマージを実行する(--merge)

    「サブモジュール」の現在のブランチに、「コミットID」が指す「コミットオブジェクト」をマージします。    

    このオプションの使用例は、「サブモジュールの現在のブランチに、コミットIDが指すコミットオブジェクトをマージする」を参考にしてください。

  サブモジュールでリベースを実行する(--rebase)

    「サブモジュール」の現在のブランチを、「コミットID」が指す「コミットオブジェクト」にリベースします。  

    このオプションの使用例は、「サブモジュールの現在のブランチを、コミットIDが指すコミットオブジェクトにリベースする」を参考にしてください。

  ユーザー定義のスクリプトを実行して、サブモジュールを更新する

    ユーザーが指定したスクリプトを実行し、スクリプトから「サブモジュール」の操作を行います。

    使用例は、「ユーザー定義のスクリプトを実行して、サブモジュールを更新する」を参考にしてください。

  更新方法を省略した場合

    更新方法を省略した場合、「submodule.サブモジュール名.update」設定で指定した更新方法が採用されます。

    「submodule.サブモジュール名.update」が設定されていない場合、 「サブモジュール」のチェックアウトが実行されます。

サブモジュールの更新に関するオプション

  「サブモジュール」の更新に関するオプションです。
  いずれのオプションも省略できます。

  強制的にチェックアウトする(-f, --force)

    チェックアウトできない状況でも、強制的にチェックアウトします。

    このオプションの使用例は、「サブモジュールを強制的にチェックアウトする」を参考にしてください。

  再帰的にサブモジュールを操作する(--recursive)

    デフォルトでは、「スーパープロジェクト」直下の「サブモジュール」が更新対象になります。

    このオプションを指定すると、「サブモジュール」内の「サブモジュール」など、再帰的に「サブモジュール」を更新対象にします。

    このオプションの使用例は、「再帰的にサブモジュールを更新対象にする」を参考にしてください。

サブモジュールの初期化やクローンに関するオプション

  「サブモジュール」の初期化やクローンに関するオプションです。

  すべての更新方法で利用できます。
  また、いずれのオプションも省略できます。

  サブモジュールを初期化する(--init)

    「サブモジュール」を更新する前に、 「サブモジュール」の初期化を行います。

    このオプションの使用例は、「サブモジュールを初期化してから、サブモジュールを更新する」を参考にしてください。

  参照リポジトリーを指定する(--reference) 

    「サブモジュール」をクローンする際、「Gitオブジェクト」を参照する「参照リポジトリー」を指定します。

    このオプションの使用例は、「サブモジュール初期化時に参照リポジトリーを指定して、サブモジュールを更新する」を参考にしてください。

  シャロークローンを指定する(--depth)

    「サブモジュール」をクローンする際、「シャロークローン」を行います。

    このオプションの使用例は、「サブモジュール初期化時にシャロークローンを指定して、サブモジュールを更新する」を参考にしてください。

コミットオブジェクトに関するオプション

  「コミットオブジェクト」に関するオプションです。

  すべての更新方法で利用できます。
  また、いずれのオプションも省略できます。

  リモートトラッキングブランチを使用する(--remote)

    デフォルトでは、「サブモジュール」更新時に「サブモジュール」で使用する「コミットオブジェクト」は、「コミットID」が指す「コミットオブジェクト」です。

    このオプションを利用すると、「コミットID」の代わりに「リモートトラッキングブランチ」が指す「コミットオブジェクト」を使用できます。

    このオプションの使用例は、「コミットIDの代わりに、リモートトラッキングブランチを使用する」を参考にしてください。

  フェッチを行わない(-N, --no-fetch)

    「サブモジュール」更新前に、「サブモジュール」でフェッチを行いません。
    このオプションは「リモートトラッキングブランチを使用する」と組み合わせて使用します。

    このオプションの使用例は、「フェッチを行わず、サブモジュールを更新する」を参考にしてください。

ワーキングディレクトリーのパス

  更新対象にする「サブモジュール」の「ワーキングディレクトリー」のパスを指定します。

  ワーキングディレクトリーのパスを省略した場合

    「ワーキングディレクトリー」のパスを省略した場合、すべての「サブモジュール」が更新対象になります。

  更新したいサブモジュールのみ指定することも可能

    更新したい「サブモジュール」の「ワーキングディレクトリー」のパスを指定して、特定の「サブモジュール」のみ更新対象にすることも可能です。

    「ワーキングディレクトリー」のパスを指定する例は、「更新するサブモジュールを指定して、サブモジュールを更新する」を参考にしてください。


関連コンテンツ
同一カテゴリーの記事
コメント
オプション