サブモジュール、サブツリーマージ
サブモジュール:http://progit.org/book/ja/ch6-6.html
サブツリーマージ:http://progit.org/book/ja/ch6-7.html
一番の違いは、あるモジュールを利用しているプロジェクトにおいて、そのプロジェクトの開発者全員がモジュールを把握しなければならないのがサブモジュールで、あるディレクトリ以下がモジュールであることを意識しなくていい場合がサブツリー。というふうに認識した。
サブモジュールはモジュールが更新されるたびにgit submodule updateしなければならない。サブツリーは通常通りgit pullでよい。
サブモジュールは、モジュールがネストした場合にめんどくさいことになる。ネストを降りていってupdateしないといけない。
なのでサブツリーを使ってみることにした。
$ git checkout master $ git merge --squash -s subtree --no-commit rack_branch Squash commit -- not updating HEAD Automatic merge went well; stopped before committing as requestedRack プロジェクトでのすべての変更がマージされ、ローカルにコミットできる準備が整いました。この逆を行うこともできます。master ブランチの rack サブディレクトリで変更した内容を後で rack_branch ブランチにマージし、それをメンテナに投稿したり本家にプッシュしたりといったことも可能です。
http://progit.org/book/ja/ch6-7.html
この逆を行うこともできます、というのは単純に
git merge --squash -s subtree --no-commit master
でいいようだ。
subtreeいいね。