git submodule
リポジトリの中のリポジトリ。別のgitリポジトリの特定のコミットを指す。評判は散々だが、すっきり置き換えられるものは誰も見つけていない。
git submodule add <url> pathしてコミットする。つまずきやすいのは、cloneのときに--recurse-submodulesを忘れること、サブモジュール側をpushする前に「サブモジュールが動いた」コミットだけを作ってしまうことだ。代替は、ベンダリング用のgit subtree、モノレポ(BazelやNx)、パッケージマネージャー(npm、Cargo、Goモジュール)。