git subtree は他のレポジトリを取り込めるが使いづらかった2021年01月23日 13時42分13秒

git には subtree と言うコマンドがある。類似としては git submodule がある。

submodule はハードリンクのように、他にある git レポジトリの場所とチェックアウトしたリビジョンを記録して、同期を取る。リビジョン管理のみを行い、ファイルは原本から取得する。

それに対し、subtree はファイルと履歴を外のレポジトリから取り込んで、手元でコミットされているファイルとして扱う。

subtree を実験的に使ってみたが、ファイルが手元にあるために、git rebase -i 等で手元の作業を適当にコミットした物をまとめる時等に、SHA が変ってしまうなどの影響で使いづらかった。結局、submodule を使うことにした。