Git の submodule を使ってみる
Git の submodule を使ってみる
submodule を使ってみたのでメモ。
複数のリポジトリを1つにまとめて管理できないかと調べてみたところ、submodule が近そうなので使ってみました(他にもっといい方法があるかもしれませんが)。
submodule
簡単に言うと、リポジトリの中に別のリポジトリを置くといったことができます。
submoduleを利用すれば、複数リポジトリをsubmodule(子リポジトリ)としておくと、親リポジトリをclone するだけでまとめてclone できます。
試しに作ったのがこちらです。 親リポジトリが「HTML5」, submodule は「test」 です。
子リポジトリtest がリンクになっており、クリックするとtest.gitのページを参照することができます。
親リポジトリが「HTML5」, submodule は「test」
https://github.com/Cartman0/HTML5
submodule の追加
親リポジトリをつくって、ローカルにclone。
Git Shell などで、親リポジトリ上で、submodule にしたいリモートリポジトリを追加する(下記のコマンド)。
git submodule add <リモートリポジトリ リンク>.git
git commit -m "<適当なメッセージ>"
git push
submodule の更新
更新部分が重要で、ちょっとややこしいです。
submodule が更新され最新のリモートリポジトリを追う場合は以下のコマンド。
git submodule foreach git pull origin master
このまま、親リポジトリのリモートを更新をする場合、
git add <submodue名>
git commit -m "<適当なメッセージ>"
git push
詳しくわかってませんが、git submodule update
は、git submodule init(add)
した時点しか 追えないようです。
git submodule update --recursive
submodule のclone
ただのclone では、submodule はclone されないので、以下のコマンド。
git clone --recursive <リモートリポジトリ リンク>.git
submodule の削除
submodule を削除する場合は以下のコマンド
git submodule deinit <リポジトリ名>
git rm -rf <対象のファイル>