リポジトリをまとめるために、リポジトリから他のリポジトリに履歴を残したまま移行しました。そのとき行った方法です。
やりたいことのイメージ
.
├── 移行したいリポジトリ (base_repo)
└── 移行先のリポジトリ (target_repo)
└── /target <- ここに「移行したいリポジトリ」を移行する
※ ただしこの場合ディレクトリの階層が異なるため、移行したいリポジトリの履歴と移行先のリポジトリの履歴が合わなくなります。
そのため、全体の階層を含めた履歴ではなく、ファイルの履歴だけの変更だけ取っておきたい目的と割り切って使用した方が良いです。
使用したバージョン
- git 2.38.1
手順
移行先のリポジトリ に 移行用のディレクトリ を作成する
移行したいリポジトリのルートディレクトリで移行用のディレクトリを作成します。(コミットに反映されるように.gitkeep
を置いています。)
|
|
移行先のローカルリポジトリ に 移行したいリモートリポジトリ を登録する
移行したいリモートリポジトリからコミット履歴をfetchするために、移行したいリモートリポジトリを登録します。
|
|
登録したリポジトリのコミット履歴を移行先のローカルリポジトリに反映する
先ほど登録したリポジトリを使ってコミット履歴をfetchし、移行先のリポジトリに反映します。
|
|
fetchできたことを確認して移行したいディレクトリにmergeします。
|
|
今回は移行したいリポジトリが移行先のリポジトリ内のディレクトリに移動させるため、エラー無視して反映できるように--allow-unrelated-histories
が必要です。