1

状況は、私たちが大衆向けに構築した製品を持っているということです。それをGITレポジトリに持っています(それを呼びましょうupstream)。クライアントの1人が製品のカスタマイズされたバージョンを望んでいたので、それをフォークして、diff GITリポジトリに保持しました(これを呼び出しますorigin)。

アイデアは、クライアントのカスタマイズのために独自の開発方向にオリジンリポジトリを導き、それでもアップストリームから更新を受信し続けることです。

私はアップストリームを開発中のローカルリポジトリのリモートとして追加しました。アップストリームから更新をプルしたり、マージしたり、問題がないと思われることは何でもできることを認識していますが、これを行った、または行った人からの連絡を希望します。ワークフローをスムーズにし、回避すべき落とし穴を見つけるためですか?

編集:フェッチマージワークフローは、両方のリポジトリでの同じ変更と同じように処理されますか?作業はすでにフォークで開始されており、元の場所で修正したものもいくつかありますが、上流でも同じ修正が必要になります。それで、それを修正するためにアップストリームで別のコミットを行う必要があり、gitは次にフォークを更新するためにそれらをマージするときに類似性を検出できますか、それとも私が行った作業コミットの資格がある場合でも、その修正を別のコミットとしてコミットする必要がありますか?私の懸念は、このプロセスを最小限の摩擦で機能させる方法に似ています。

別の質問:チェリーピックを使用することは、小さな変更では良い考えのようです。考え?

4

2 に答える 2

1

将来のマージの問題のために、可能であればチェリーピッキングを避けてください(「gitで特定のコミットをマージする方法」で説明されています)

あるブランチから別のブランチへのコミットをチェリーが選択するには、基本的にパッチを生成してから適用する必要があるため、その方法でも履歴が失われます。

このコミットIDの変更は、とりわけgitのマージ機能を壊します

それらの変更のみを適用するために、独自のコミットで他のリポジトリに適用する必要があることがわかっている変更を分離してみてください。
次に、ブランチのgit fetch後にaが続くrebaseのが、アップストリームからのコミットをブランチ履歴に含めるための最良の方法です。これは、「 gitワークフローとリベースとマージの質問
」 で説明されているワークフローに似ています(更新のセクションを参照)。

于 2012-08-01T10:26:17.123 に答える
0

さくらんぼの摘み取りを避けるために、システムの設計/アーキテクチャをよく見る必要があるかもしれません。プラグインメカニズムなどを使用して機能モジュールに分割されるほど、両方のブランチに機能と更新を追加するのが簡単になる可能性があります。

システムがモジュールにきちんと分割されていない場合、Gitワークフローはマージ中の問題を解決せず、マージはますます複雑になります。

于 2012-08-01T10:56:04.633 に答える