すんごい小ネタ。
サブモジュールとか--subdirectory-filterとかは出てくるんだけど、ちゃうねん、単に完全に一切全く無関係の別のリポジトリが作りたいだけなんだよ。
という問題に何故か直球の答えが見つからなかったのでここに書いておく。
簡単すぎて常識だから逆に誰も書いてないのかもしれない。
手順
元々外側のリポジトリがあって、そこに別のリポジトリpath/to/otherproject/
を作りたいとする。
外側のリポジトリ
まず外側のリポジトリから見えなくするために.gitignoreを書く。
/path/to/otherproject/
もし既に外側のリポジトリに入ってしまっているようなら、リポジトリから削除する。
git rm -r --cached path/to/otherproject
--cached
を入れるとリポジトリから消すだけでファイルは残る。入れなければファイルごと削除。
内側のリポジトリ
単にgit init
するだけ。
cd path/to/otherproject
git init
その後はotherprojectディレクトリ内であればotherprojectのgitを見るし、ディレクトリ外では外側のリポジトリを使えるようになる。
めでたしめでたし。
その他
.gitignore
を書かなければ、外側のリポジトリが内側のリポジトリを自動的にサブモジュールとして扱ってくれるみたい。
感想
そもそもgitリポジトリ内に全く別のリポジトリを作るという運用を見直したほうがいいという意見には賛成。