これは自分のための、シンプルで基本的な Git Submodules メモです。
自分が使うときに忘れてしまうことに気づいたので、結果的に何度も GPT に尋ねてしまいました...
Git Submodules を持つリポジトリをクローンする#
# 方法一、一歩で完了
git clone --recurse-submodules <主リポジトリURL>
# 方法二、通常の方法、やや面倒
git clone <主リポジトリURL> <主リポジトリディレクトリ?>
cd <主リポジトリディレクトリ>
git submodule update --init --recursive
現在のリポジトリに Submodules を追加する#
git submodule add <サブモジュールリポジトリURL> [パス]
既存の Submodules を更新する#
記録されたサブモジュールの Commit ID に基づいてサブモジュールを更新します。
- サブモジュールリポジトリに更新があった場合
- メインプロジェクトが参照しているサブモジュールのコミットポイントが変更された場合
git submodule update --init --recursive
既存の Submodules を最新のコミットに更新する#
# Submodules に入り、最新の変更を取得する
cd path/to/my-submodule
git pull
# メインプロジェクトのルートパスで、コミットを保存する
git add path/to/my-submodule
git commit -m "chore: update submodule"
既存の Submodules のリポジトリアドレスを更新する#
# .gitmodules ファイルを編集し、url フィールドを変更する
# .gitmodules の変更を .git/config に同期する
git submodule sync
# Submodules を更新する
git submodule update --init --recursive
# 保存してコミットする
git add .gitmodules
git commit -m "chore: update submodule url"
git push
既存の Submodule を削除する#
# git を使って Submodule ディレクトリを削除する
git rm -f <submodule_path>
# `.gitmodules` と `.git/config` ファイルを編集する
# 該当する Submodule に関連する設定を見つけて削除する、以下のように
# [submodule "submodule_name"]
# path = submodule_path
# url = https://github.com/username/repo.git
# Submodule ディレクトリ内の `.git` ディレクトリの参照を削除する。
# 以前に `git rm` を使用している場合、このステップは自動的に完了しているはずです。
# 変更をコミットする
git add .
git commit -m "chore: remove submodule"
# `.git/modules` から Submodule に関連するデータを削除する
rm -rf .git/modules/<submodule_path>