コミットに変更を加え、コミットの修正を実行しました。プッシュを実行すると、エラーが表示されます。
! [remote rejected] master -> refs/for/master (no changes made)
コミットメッセージの変更IDと、まだ有効なコミットを確認しました。
ファイルを変更して、変更として表示されることを確認してから、ステージング領域に追加し、別のコミット修正を行いました。もう一度プッシュを試して、同じ問題を取得します。これについてはわかりません。
編集:これはgitではなくgerritにプッシュしています。
私は走っています:
git Push Origin master:refs/for/master
そして、Originの詳細を取得した結果は次のとおりです(会社の詳細を編集して)。
$ git remote show Origin
* remote Origin
Fetch URL: ssh://[email protected]:29418/myrepo
Push URL: ssh://[email protected]:29418/myrepo
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master rebases onto remote master
Local ref configured for 'git Push':
master pushes to master (up to date)
この問題は、以前に実行したアクションが原因です。まだレビューの段階にある変更に加えて、新しい変更をPush
しようとしていました。誰の親もレビューの対象でした。
Trunk ------ Parent A ----- Parent B ----- New change
(merged) (unmerged) (unmerged)
私はcherry-pick
これら2つの変更をローカルで取得する(親Aと親B)、そして3番目のcherry-pick
Push
を試みる前にローカルブランチから私の変更を取得します。私の個人的な変更は本質的に履歴を書き直そうとしていたため、それが問題の原因です。
正しいプロセスは、トランクにいるときにpull
Parent Bのみにすることです。これにより、トランクとそのトランク(この場合は単に親A)間のコミットが自動的にプルアップされます。その後、cherry-pick
その上での私の新しい変更とPush
は問題なく動作します。
この問題に関する公式ドキュメントは、次を参照してください。
https://gerrit-review.googlesource.com/Documentation/error-no-new-changes.html
私は同じ問題を抱えていました、私の問題は、変更をプッシュし、そのマージを放棄し、いくつかの微調整を行ったことでした間違ってコミットを修正し、再び押した。それは私がエラーを得た場所です。
私の修正:
git commit --amend
、既存のchange-Id
、gitフックがセットアップされていると仮定すると、コミットと新しいchange-Id
を割り当ててください。change-Id
、何が起こっているかを把握し、それに応じて修正します。 (推奨)一連のレビューを更新しようとする場合、それぞれが維持したい独自のchange-idを使用して(たとえば、2つのコミットの順序を入れ替えるリベース後)、一部のコミットがパイルは変更されません。コミットなどを変更して、新しいハッシュを強制的に生成する必要があります。
Gerritが取り上げるべき変更を加えたことを確認する限り、すべてを正しく行っているように思えます。
git Push Origin master:refs/for/master
たぶんこれが問題ですか?変更がmasterブランチのローカルバージョンにない場合は、変更をプッシュしていません。代わりに試してください:
git Push Origin HEAD:refs/for/master
HEAD
は、gitでの現在のコミットを表すショートカットです。
私は同じ問題を抱えていました。コミットメッセージを変更し、コードをプッシュしただけです。成功しました。
同じエラーメッセージが表示されましたが、プッシュしようとした変更は、元の変更セットとは異なるコミットの上にありました(git cherry-pick
でいくつかのマジックトリックを行い、gerritはそれを好まなかったようです)。元の変更を破棄し、問題を解決できることに気付いたときに再度開きましたが、git review
でgerritに送信できませんでした。
この時点での私の簡単な解決策は、gerrit Webサイトからの元の変更を放棄し、change-Id: sha1
を使用してコミットメッセージからgit commit --amend
最後の行を削除することで新しい変更を作成することでした。
プッシュされたコミットがこの変更の現在のパッチセットと同一である場合、このエラーメッセージにより、Gerritは変更の新しいパッチセットとしてコミットをプッシュすることを拒否します。
プッシュされたコミットは、現在のパッチセットと同一であると見なされます。
すべて同じです。
同じ問題がありました。同時に、マスターにマージされていない別のコミットがあり、gerritでレビューされ、gerritでリベースされました。つまり、レビューのためにプッシュされたコード。 gerritでリベースし、完了するまでレビューを保留します。コードを確認したら、エラーなしでプッシュできました。