Menu
Coddy logo textTech

Git Submodule

最終更新

サブモジュールは、あるGitリポジトリを別のリポジトリの中に特定のコミットに固定して埋め込みます。親リポジトリは依存するサブモジュールのコミットを記録するため、全員が同じバージョンを取得できます。独自のリポジトリに存在する共有ライブラリやコンポーネントを、コードをコピーせずに取り込む方法です。

これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルで、インストール不要です。

git submodule は別のリポジトリを、特定のコミットに固定した状態で自分のリポジトリの中に埋め込みます。

構文

CommandWhat it does
git submodule add <url> libs/xリポジトリをサブモジュールとして libs/x に追加する
git clone --recurse-submodules <url>リポジトリとそのサブモジュールをクローンする
git submodule update --init --recursive通常のクローン後にサブモジュールを初期化して取得する
git submodule update --remoteサブモジュールを最新のコミットに更新する
git submodule status各サブモジュールのコミットを表示する

よくあるケース

GoalCommand
サブモジュールを使うプロジェクトをクローンするgit clone --recurse-submodules <url>
クローン後にサブモジュールを取得するgit submodule update --init --recursive
サブモジュールを最新に更新するgit submodule update --remote

git submodule のよくある質問

git submodule とは何ですか?
サブモジュールは、別のGitリポジトリの中に固定のコミットでネストされたGitリポジトリです。親リポジトリはサブモジュールのファイルではなく、その正確なコミットへのポインタを保存するため、共同作業者は同じバージョンをチェックアウトできます。独自のリポジトリと履歴を持つ依存関係や共有コンポーネントを取り込むために使われます。
サブモジュール付きのリポジトリをクローンするには?
git clone --recurse-submodules <url> を使うと、親とそのすべてのサブモジュールを一度にクローンできます。そのフラグなしですでにクローンした場合は、後で git submodule update --init --recursive を実行してサブモジュールのフォルダを埋めてください。
サブモジュールを最新のコミットに更新するには?
git submodule update --remote を実行すると、各サブモジュールの追跡ブランチを取得して最新のコミットに移動します。その後、親リポジトリで変更をコミットしてください。親はどのサブモジュールのコミットを指しているかを記録するため、そのポインタをコミットするまで更新は保存されません。
クローン後にサブモジュールのフォルダが空なのはなぜですか?
--recurse-submodules なしでクローンしたため、Gitがフォルダを作成しても中身を取得しなかったからです。各サブモジュールを初期化してダウンロードする git submodule update --init --recursive で修正してください。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ内の本物のシェルで git submodule を実行できます - インストール不要です。Coddyの無料のインタラクティブなGitコースでも、リポジトリのセットアップを段階的に扱っています。
Coddy programming languages illustration

Coddy で Git を学ぼう

始める