参考)
Git - サブモジュール
gitリポジトリをネストしたい場合がある。
プログラム作成中に汎用的なclassを作ったとき、githubに公開したいけど、メインのコードは公開したくない時。
もしくは、プログラム作成中にgithubで公開されているコードを使いたいけど、のちのち変更を取り込んだりしたいからgit管理しつつ(ただし、作成中プログラムのgitとして管理したいわけじゃない)コードに盛り込みたい時。
こんなときはgit submoduleを使うらしい。
※ただし、git監理が結構複雑になるのでなにか別の方法があればそうしたい気もする。
だいぶ慣れないと「gitで変更前に戻したのに実行時エラーになる!」みたいなことになって混乱しそう。
メインgitリポジトリへ、submoduleリポジトリの導入
(submoduleリポジトリを配置するディレクトリへ移動して)
git submodule add [リポジトリurl] git commit(メインgitリポジトリへ「submoduleが追加された」というコミットを打つ)
既存gitリポジトリのブランチ切り替え
git checkout [特定のコミット] git submodule update(updateをして初めてsubmoduleリポジトリが正しい状態へとcheckoutされる)
submoduleリポジトリの更新時
(submoduleのディレクトリへ移動して)
remoteの変更を取り込むなら
git pull
もしくは 自分で変更したなら
git add git commit
(submoduleのディレクトリから出て)
git add git commit(「submoduleが変更された」ということをcommitする)
submoduleリポジトリが入っているgitリポジトリをcloneするとき
git clone [リポジトリurl] git submodule init git submodule update
もしくは下記ならupdateまでやってくれる。
git clone --recursive [リポジトリurl]