1. ホーム
  2. ギット

[解決済み】Git リポジトリのサブモジュールを一覧表示する

2022-03-31 14:24:39

質問

Git リポジトリに複数のサブモジュールが入っています。の後に、すべてのサブモジュールの名前をリストアップするにはどうしたらよいでしょうか。 git submodule init を実行しましたか?

git submodule foreach コマンドでサブモジュールの名前を echo することもできますが、これはサブモジュールがチェックアウトされたときにのみ動作し、init ステップ以降ではまだ動作していません。サブモジュールがチェックアウトされるまでには、さらに多くのステップが必要で、サブモジュールの名前をスクリプトにハードワイヤーで書き込むようなことはしたくありません。

では、現在登録されていて、まだチェックアウトされていない全てのサブモジュールの名前を取得するGitコマンドはあるのでしょうか?

どのように解決するのですか?

と同じ仕組みを使うことができます。 git submodule init はそれ自身を使う、つまり .gitmodules . このファイルでは、各サブモジュールのパスとそれが参照するURLを列挙しています。

例えば、リポジトリのルートから cat .gitmodules は内容を画面に表示します。 cat ).

.gitmoduleファイルはGitの設定フォーマットを持っているので、git configを使ってこれらのファイルをパースすることができます。

git config --file .gitmodules --name-only --get-regexp path

はすべてのサブモジュールのエントリを表示し、さらに

git config --file .gitmodules --get-regexp path | awk '{ print $2 }'

の場合、サブモジュールのパスそのものを取得するのみです。