新しいレポを初期化します。
複数のすべてのプロジェクトから目的のバージョンのファイルをコピーし、それらを結合します。必要に応じて、ディレクトリ構造を並べ替えることができます。そしてファイルが内容を期待していることを確認してください。
セットアップ.gitignore
.gitattribute
などすべてを追加して、新しいリポジトリの最初のコミットを行います。
複数のプロジェクトからブランチを取り出し、オプション-s ours
ですべてをマージします。 ours
戦略は、実際のコンテンツのない履歴のみをマージします。
例:
のは、我々はすべてのブランチmaster
を持つ、RepoA、RepoBとRepoCがあるとしましょう。 3つのブランチの最新バージョンのファイルをマージします。
git init RepoABC
cd RepoABC
#copy the files all RepoA, RepoB, RepoC and rearrange the directory structure if necessary.
#add .gitignore, .gitattribute, etc if necessary.
git add .
git commit -m 'new root for combining RepoA RepoB and RepoC'
git fetch origin_repoa master:repoa_master
git fetch origin_repob master:repob_master
git fetch origin_repoc master:repoc_master
git merge repoa_master repob_master repoc_master -s ours -m 'Merge and preserve the histories of RepoA, RepoB and RepoC, with merge strategy "ours"'
ここで、新しいリポジトリのブランチに注目し、新しい変更を加えることができます。歴史は予約されており、私たちはそれらを振り返ることができます。ディレクトリ構造が再配置された場合、最初のコミットをチェックアウトするときに小さな問題が発生することがあります。新しいフォルダとファイルは、コミットがチェックアウトされた後、追跡されていないファイルとして残ります。 git clean -df
はそれらをスキップしますので、rm -rf
を一度だけ使用してください。
問題を解決するための回答がありますか?はいの場合は、回答としてマークすることができます。また、同様の質問をした他の人にとっても有益です。 –