2

これが私の問題です。私が働いている会社は、osCommerce に基づいた 1 つの Web サイトから始まりました (私が入社するずっと前から)。サイトは成長し、最初のサイトをコピーして、必要に応じて変更することで 2 番目のサイトを開始しました。これは何年にもわたって続き、現在では 5 つのサイトがあり、すべて同じコードに基づいています。あるサイトに変更を加えると、現在、それらの変更を他のすべてのサイトのコードに手動でコピーし、変更されたすべてのコードを各サイトにアップロードする必要があります。

これは非常に非効率的で、私を夢中にさせています。私は、Git がそのような問題を解決するように設計されていることを知っています。現在、私は各サイトを独自の Git リポジトリとして持っていますが、あるサイトから他のすべてのサイトに変更をコピーする必要があります。私はGitにもかなり慣れていません。私はコミット、ブランチ、プルなどを取得しますが、それ以外はかなりグリーンです。

これらのサイトをすべて 1 つのレポにまとめる方法はありますか?どうすればよいですか? また、各サイトのファイルが必ずしも同一であるとは限らないことも指摘しておく必要があります。1 つのサイトは優先度が高いと見なされているため、他のサイトに展開されていない緊急事態にいくつかの変更が加えられており、別のサイトは他の 4 つとはわずかに異なる方法で実行されているため、いくつかの場所でコードがわずかに異なります. これにより競合が発生することは承知していますが、すべての競合を見つけて解決し、システムが意図したとおりに機能し、バリエーションがデータベース/オプション駆動型になるようにしたいと考えています。上司は、2 ~ 3 か月以内に少なくともあと 2 つのサイトを展開することを望んでいるので、その時点で私は本当に頭がおかしくなります。

私が望んでいることは可能ですか?競合を解決するために、すべてのファイルを確認する必要がありますか? どんな助けでも大歓迎です!

4

1 に答える 1

1

それらを一緒にマージしたい場合は、いくつかのバージョンの改訂履歴を放棄する必要があります.

  1. 開始点として 1 つのバージョンを選択します。
  2. オリジナルを含むサイトのすべてのバージョンに対して、そのバージョン リポジトリのクローンを作成します。
  3. 各クローンの内容を削除しますが、.git フォルダーはそのままにしておきます。
  4. 各バージョンの内容 (.git を除く) を対応するコピーにコピーします。
  5. 専念

これにより、サイトの各バージョンのブランチと、一般的な変更のマスター ブランチが残ります。各ブランチには共通の祖先があります。

マージするときは、あるバージョンが別のバージョンの変更で上書きされないように注意する必要があります。これを簡単に行うには、サイト間で共有されるすべての変更を master ブランチで行い、さまざまなバージョンにマージする必要があります。マージするときはまだ注意が必要で、git のチェリー ピック機能を使用して個々の変更セットを移動する必要があります。マスター以外のブランチから変更を取り込むときは、間違いなくチェリー ピックが必要です。

開始する前に、開始ブランチをリファクタリングして、サイト固有のコードを少なくすると、作業が簡単になる場合があります。

于 2012-05-04T17:02:24.693 に答える