git submodule init
いくつかのサブモジュールを含む Git リポジトリがあります。を実行した後に、すべてのサブモジュールの名前を一覧表示するにはどうすればよいでしょうか?
このgit submodule foreach
コマンドはサブモジュールの名前をエコーできますが、これはサブモジュールがチェックアウトされた後にのみ機能し、init ステップの後にはまだチェックアウトされていません。チェックアウトする前に実行する必要があるチェーン内のステップがさらにあり、サブモジュールの名前をスクリプトにハードワイヤードする必要はありません。
では、現在登録されているがまだチェックアウトされていないすべてのサブモジュールの名前を取得する Git コマンドはありますか?
ベストアンサー1
自体を使用するのと同じメカニズム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 }'
サブモジュールパス自体のみが取得されます。