40

Gerrit バージョン 2.4.2 を使用しています。ブランチがmasterあり、 という名前の新しいブランチを作成しました newbranch。次に、いくつかの変更をリモート (Gerrit's) にプッシュしましたnewbranch。Gerrit で確認した後、変更を にマージしましたnewbranch

いいえ、 を にマージしnewbranchmaster更新を送信master( からの変更とマージ) し、ブランチnewbranchを削除します。newbranch

私はこれをやろうとしました:

git fetch
git checkout master
git merge newbranch
git push origin master:refs/for/master

しかし、Gerrit は次のメッセージを返します。

 ! [remote rejected] master -> refs/for/master (no new changes)

私は何をすべきか?

4

3 に答える 3

36

この状況は、Gerrit のバグとして報告されています。Gerritの問題トラッカーからの解決策/回避策は次のとおりです。

私の知る限りでは、現在 2 つのオプションがあります -

  1. refs/heads へのプッシュを強制します。これは早送りにすぎないため、理論上はすべてがすでにレビューおよび検証されています。もう一度やり直しても意味がないので、そのプロセスをスキップして、refs/for ではなく refs/heads にプッシュしてください。

  2. 先に進み、マージ コミットを作成します。'git merge --no-ff' を使用します。早送りの状況では必要ありませんが、これによりマージ コミットが作成されます。その後、通常どおり、マージ コミットをアップロード、レビュー、検証、およびマージできます。

私の会社はオプション 2 を採用する傾向があります。修正しないとしてこれを閉じますが、これを改善する方法について何か提案があればお知らせください。

于 2012-10-11T13:57:02.667 に答える
11

マージが早送りマージの場合、早送りはブランチ ポインタを移動するだけなので、gerrit にプッシュするオブジェクトは存在しません。

早送りを避けて、マージで強制的にオブジェクトを作成する必要があります。

git merge --no-ff
于 2014-06-23T17:06:47.083 に答える