あなたが本当にすべきことは、共通のコードを含む「テンプレート」ブランチ/リポジトリを作成することです。次に、カスタマイズされたリポジトリをそのテンプレートブランチからブランチします。テンプレートに変更を加えると、それらをカスタマイズされたリポジトリにマージできます。
ここで、他のリポジトリがすでに存在するため、変更をファッジする必要があります。基本的に、すべてのリポジトリが手動で更新されたカスタマイズされていない変更を使用してテンプレートリポジトリを作成します。次に、カスタマイズしたリポジトリをリモートとしてこのテンプレートリポジトリに追加しgit remote add customized1 URL
、適切なブランチをチェックアウトしますgit checkout -t -b customized1-master customized1/master
次に、テンプレートのマスターからカスタマイズされた各マスターに「偽の」マージを実行します。
for f in customized1 customized2; do
git checkout $f-master
git merge -s ours master
git push $f $f-master:master
done
もちろん、プッシュを実行する前に、それが何をしたかを確認することもできます。
この時点で、カスタマイズされたリポジトリ/ブランチに関連する祖先としてテンプレートブランチを挿入しました。次に、テンプレートブランチ(この新しいリポジトリでは私の例ではマスターと呼ばれます)に変更を加え、コミットした後、実際のマージを実行できます。
for f in customized1 customized2; do
git checkout $f-master
git merge master
git push $f $f-master:master
done
今回プッシュする前に、何が起こったのかをほぼ確実に調べたいと思うでしょう。これで、テンプレートへの変更をすべてのカスタマイズされたリポジトリと簡単に共有できます。また、新しいカスタマイズされたリポジトリが必要な場合は、テンプレートブランチからブランチすることができます。