ログ日記

作業ログと日記とメモ

サブモジュール、サブツリーマージ

サブモジュール: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 requested

Rack プロジェクトでのすべての変更がマージされ、ローカルにコミットできる準備が整いました。この逆を行うこともできます。master ブランチの rack サブディレクトリで変更した内容を後で rack_branch ブランチにマージし、それをメンテナに投稿したり本家にプッシュしたりといったことも可能です。

http://progit.org/book/ja/ch6-7.html

この逆を行うこともできます、というのは単純に

git merge --squash -s subtree --no-commit master

でいいようだ。
subtreeいいね。