ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

git submoduleというのがその答えらしい。


これに対する正解のようなものがタイトルのコマンドらしいです。

つかいかた

$ cd /directory/of/your/repository
$ git submodule add https://github.com/cakephp/debug_kit.git Plugin/debug_kit

という感じで使うらしい。なぜか時々うまくいかないなお、モジュールを追加したいリポジトリのルートでコマンドを打たないと追加してくれません。
git submodule - みずぴー日記によると、pullした先では

自分のレポジトリをコピーしただけでは、サブモジュールはコピーされません。git submodule initとgit submodule updateをする必要がある。

とのことです。こちらはまだ試してませんが、ひとまずこれでいけそうな気がします。
ちなみにgit submoduleとだけ打つと

$ git submodule
 d8ft79gy8upio Plugin/debug_kit(2.2.0)
 ft7ghujikop84 Plugin/hogehoge

という感じに追加したサブモジュールの一覧が見れます*1
ちなみにこれ、追加するのは簡単ですが、削除するのは手間です。submoduleの削除 - 呆備録によると、

  1. .gitmodulesを修正
  2. .git/configを修正
  3. git rm --cached 削除したいモジュールのディレクトリ
  4. git commit

という4段階の手続きを踏まされます。実際踏んでみましたが、心の底から「めんどくさい」と思いました。自分の行いのなかったことにするのがめんどくさい、というのはgitはもとよりバージョン管理ツールの精神みたいなものだと思ってますが、いくらなんでもこれは…

*1:ハッシュと一部サブモジュールは架空のものです