他リポジトリのファイルをコミットも一緒に移行する方法

git を使っているとファイルを履歴ごと別のリポジトリに移行したい場合が発生すると思います。

例えば過去の構成管理ルールがあいまいでカオスになってしまったので一から作り直したいとか。

そんなリポジトリを移行したくなった時の手順をメモしておきます。

## 移行元リポジトリ格納フォルダ作成
$ mkdir .\<移行元リポジトリ格納フォルダ>
$ touch .\<移行元リポジトリ格納フォルダ>\.gitkeep
$ git add -A
$ git commit -m "取込用フォルダ作成"

## 移行元リポジトリをリモートリポジトリとして追加
$ git remote add <移行元リポジトリ名> <移行元リポジトリURL>
$ git fetch <移行元リポジトリ名>

## 移行元リポジトリを取り込み
$ git merge --allow-unrelated-histories -X \
subtree=<移行元リポジトリ格納フォルダ> <移行元リポジトリ名>/master

## 移行元のリモート登録を削除
$ git remote rm <移行元リポジトリ名>