2つのGitリポジトリをマージするにはどうすればいいですか? 質問する

2つのGitリポジトリをマージするにはどうすればいいですか? 質問する

次のシナリオを考えてみましょう。

独自の 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

出典:git は異なるリポジトリをマージしますか?

この方法は私にとっては非常にうまくいきました。より短く、私の意見ではよりクリーンです。

project-aサブディレクトリに入れたい場合は、git-filter-repofilter-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

おすすめ記事