git subtreeはsubmoduleと違って利用側のリポジトリにコミット履歴ごと取り込むのでどこまで反映されたのかや、subtreeと利用リポジトリ側の修正が同時にコミット出来るのでとても便利な機能です。 しかし、subtree側のモジュールも発展途上で利用側もモジュール側も頻繁に更新されるような場合、巷で一般的で紹介されているようなsubtree pull/pushによる更新の反映を行っても頻繁に競合して運用は難しいのではと悩みました。そこで運用方法を見直しsubtree split/mergeを活用した方法だと安全に運用できそうなので紹介します。 オススメの運用方針 git subtree push/pull は使用禁止にする subtree利用側とsubtree側のリモートリポジトリ両方でもし同時に開発が進行していたのなら当然master等の同一ブランチに並行してコミットが入る