0

同じ定型的なPHPテーマに基づく2つのプロジェクト(たとえば、projectAとproject )に取り組んでいます。Bプロジェクトごとにコードがわずかに異なる場合でも、多くの場合、両方に同じ変更を加える必要があります。

たとえば、とをに追加function_1()したが、にのみ追加しfunction_2()たいとします。または、コンテンツの削除や変更についても同じです。A/index.phpfunction_2B/index.php

大きな変更の場合、ファイル間をヤンクペーストするのは非効率的です。

これは、より高度なgitチュートリアルが役立つかもしれない種類のものだと思いますか?-あるいは、この目的のために特別に作られたツールがあるのでしょうか?-この種のことを扱うためのドキュメントはどこにありますか。

4

2 に答える 2

2

あなたが本当にすべきことは、共通のコードを含む「テンプレート」ブランチ/リポジトリを作成することです。次に、カスタマイズされたリポジトリをそのテンプレートブランチからブランチします。テンプレートに変更を加えると、それらをカスタマイズされたリポジトリにマージできます。

ここで、他のリポジトリがすでに存在するため、変更をファッジする必要があります。基本的に、すべてのリポジトリが手動で更新されたカスタマイズされていない変更を使用してテンプレートリポジトリを作成します。次に、カスタマイズしたリポジトリをリモートとしてこのテンプレートリポジトリに追加し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

今回プッシュする前に、何が起こったのかをほぼ確実に調べたいと思うでしょう。これで、テンプレートへの変更をすべてのカスタマイズされたリポジトリと簡単に共有できます。また、新しいカスタマイズされたリポジトリが必要な場合は、テンプレートブランチからブランチすることができます。

于 2012-07-19T00:36:31.663 に答える
1

実際には、このために特別に作られたツールがあります。プロジェクト間でコードを共有している場合、それらはプル元のライブラリとして扱われ、独自の開発ブランチ/リポジトリを持っている必要があります。Gitには、リモートリポジトリをプロジェクトに追加し、それらを個別に開発する機能が含まれています。

3つのリポジトリが必要になります。リポジトリA、リポジトリB、および共有リポジトリC。

共有されるコードはリポジトリCにあり、リポジトリAとリポジトリBはリポジトリCをリモートリポジトリとして追加する必要があります。これは、リモートリポジトリがどのように機能するかについてのガイドであり、この概念をどのように設定するかについての良いアイデアを提供するはずです:http: //gitref.org/remotes/

乾杯、そして幸せなコーディング!

于 2012-07-19T00:42:32.813 に答える