0

約 1 か月前に「マスター」ブランチから作成された「プロジェクト」ブランチがあります。ブランチを別々に保ちながら、マスター ブランチからプロジェクト ブランチにすべての変更を取り込もうとしています。2 つのブランチの組み合わせである 1 つのコミットの最終結果が必要です。これを gerrit セットアップにプッシュできます。

両方のブランチの最新バージョンを取得してから、マスター ブランチをプロジェクト ブランチにマージしようとしました。これにより、2 つのブランチを結合するマージ コミットが発生しました。ただし、gerrit でうまく動作するすべての変更を含む単一のコミットが必要なため、「オリジン/プロジェクト」の上にブランチをリベースしようとしましたが、マスター ブランチの 600 以上のコミットをマージする必要がありました。二人が分裂してから。これが事実であるため、この時点でコミットをプッシュすると、同様にクレイジーなリベースが必要な gerrit が発生すると想定しています。

また、プロジェクト ブランチをリベースして、それが分岐したポイントより上の 1 つのコミットまで縮小してから、その 1 つのコミットをマスター ブランチの上にリベースしようとしました。最後に、「Refs ref/heads/project is at [hash] but expected [different hash]」というエラーが表示されました。このアプローチでは、プロジェクト ブランチのコミット履歴も消去されますね。

これにアプローチするより良い方法はありますか?master ブランチにプロジェクトのものがない限り、次に 2 つを結合しようとすると、同じ競合が発生するという私の仮定は正しいですか?

4

2 に答える 2

0

マージコミットが機能しないのはなぜだと思いますか? 2 つのブランチの履歴を 1 つのコミットに結合することは、まさにマージの目的です。それらは Gerrit で問題なく動作します - 私たちは常にそれらを使用しています。

于 2013-07-15T17:18:24.183 に答える
0

Amergeは 2 つの分岐を 1 つに結合しません。コミットが 2 つの別々の場所に移動する 2 つの異なる物理ブランチがまだあります。また、マスター ブランチには、元の分割以降のプロジェクトからの変更はありません。したがって、マージが進むべき道です。別のコミットを強制するオプションがmerge呼び出されます。--no-ff

于 2013-07-13T14:53:28.193 に答える