おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

git submodule

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をまとめてできる