次のシナリオを考えてみましょう。
独自の Git リポジトリで小さな実験プロジェクト A を開発しました。プロジェクトが成熟したので、独自の大きなリポジトリを持つより大きなプロジェクト B に A を追加したいと思います。ここで、A を B のサブディレクトリとして追加したいと思います。
どちらの側でも履歴を失うことなく、A を B にマージするにはどうすればよいでしょうか?
ベストアンサー1
project-a
にマージする場合project-b
:
cd path/to/project-b
git remote add project-a /path/to/project-a
git fetch project-a --tags
git merge --allow-unrelated-histories project-a/master # or any branch you want to merge
git remote remove project-a
この方法は私にとっては非常にうまくいきました。より短く、私の意見ではよりクリーンです。
project-a
サブディレクトリに入れたい場合は、git-filter-repo
(filter-branch
は落胆した上記のコマンドの前に、以下のコマンドを実行します。
cd path/to/project-a
git filter-repo --to-subdirectory-filter project-a
2 つの大きなリポジトリをマージし、そのうちの 1 つをサブディレクトリに配置する例:出典: github.com
注意:
この--allow-unrelated-histories
パラメータはgit >= 2.9以降にのみ存在します。Git - git merge ドキュメント / --allow-unrelated-histories
更新:タグを保持するために、@jstadler の提案に従って
追加されました。--tags