gitでsvn:external的なことをしたいときに使うgit submoduleについてのメモ(2009/08/24入門gitを読みながらいろいろ追記)
git submodule
submoduleとして定義しているものの名前とリビジョンのハッシュ値を表示。ハッシュ値の前のマイナス記号は、まだ初期化されて(.git/configに追加されてない)ないことを意味する。
git submodule -8248b597234d0c4a4c767ee2d88c2c1038ce8cb9 rinari -9b12c797a11a975960c435f4723f52cb9740cb70 yasnippets-rails
git submodule add
自分のリポジトリにsubmoduleを追加したいときはgit submodule add
使い方
git submodule add <repo> <path>
効果
- カレントディレクトリ下の
に からサブモジュールの複製を作成。デフォルトではmasterをチェックアウト。master以外を指定したい時は-bを使う。 - 実行すると.gitmodulesにsubmoduleへのURLとpathが追加される。
submoduleの中でsubmoduleという入れ子もできる。けどその時はinit -> updateをそれぞれのディレクトリでやらないといけないので面倒。トップディレクトリの.gitmodulesをいじって一度でやるのがいいのかも。
git submodule init
配布されたリポジトリから、sumoduleをインストールしたい時はinit -> update
使い方
git submodule init
効果
.gitmodulesに書かれたサブモジュールのリポジトリURLを .git/config に追加する
git submodule udpate
git submodule initとセットで使うことが多い。
使い方
git submodule update
効果
.git/configをみて、指定されているコミットのチェックアウトをする。もしサブモジュールに変更を加えていてコミットしていない場合、その変更は消されてしまうので気をつける。
git submodule update --init
でinitとupdateをまとめてできる