web-dev-qa-db-fra.com

Git / gerrit, Push remote rejeté, aucune modification apportée

Modifications apportées à une validation, modification de la validation effectuée. Faites un Push et j'obtiens l'erreur:

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

Vérifié l'ID de changement dans le message de validation et c'est toujours une validation valide.

J'ai essayé de changer un fichier, en vérifiant qu'il apparaît comme une altération, puis ajouté à la zone de transit et effectué une autre modification de validation. Essayez à nouveau le Push et obtenez le même problème. Aucune idée sur celui-ci.

Edit: Cela pousse à gerrit, pas à git directement.

Je suis entrain de courir:

git Push Origin master:refs/for/master

Et le résultat de l'obtention des détails d'origine est (avec les détails de l'entreprise édités):

$ 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)
36
edwardmlyte

Ce problème est dû aux actions que j'avais effectuées précédemment. J'essayais de Push un nouveau changement, en plus d'un changement qui était encore à réviser, qui était également parent à réviser.

 Trunk ------ Parent A ----- Parent B ----- New change
(merged)     (unmerged)     (unmerged)

J'avais utilisé cherry-pick pour obtenir ces deux modifications localement (parent A et parent B), puis une troisième cherry-pick pour obtenir ma modification d'une branche locale avant d'essayer de Push. C'est ce qui a causé le problème, parce que mon changement personnel essayait essentiellement de réécrire l'histoire.

Le processus correct serait de seulement pull Parent B au niveau du tronc. Cela tire automatiquement toutes les validations entre le tronc et lui (dans ce cas, uniquement le parent A). Ensuite cherry-pick ma nouvelle modification en plus de cela et Push fonctionnera bien.

50
edwardmlyte

Veuillez vous référer à la documentation officielle sur ce problème ici:

https://gerrit-review.googlesource.com/Documentation/error-no-new-changes.html

J'ai eu le même problème, mon problème était que j'ai poussé le changement, puis abandonné cette fusion, puis j'ai fait quelques ajustements, à tort modifié mon commit et poussé à nouveau. C'est là que j'ai eu l'erreur.

Ma solution:

  1. Si vous voulez simplement contourner rapidement ce problème, faites git commit --amend, supprimez l'existant change-Id, en supposant que vous avez configuré les hooks git, vous pouvez terminer la validation et un nouveau change-Id devrait vous être attribué.
  2. Allez dans gerrit et recherchez votre change-Id, déterminez ce qui se passe et corrigez en conséquence. (conseillé)
5
benjaminz

Si vous essayez de mettre à jour un ensemble de révisions, chacune avec son propre identifiant de modification que vous souhaitez conserver (par exemple, après un rebase où vous échangez l'ordre de deux validations), vous pouvez être rejeté si certaines des validations du pile reste inchangée. Vous devez forcer la génération d'un nouveau hachage en reformulant les validations ou quelque chose de similaire.

2
Matt Montag

Il semble que vous fassiez tout correctement jusqu'à ce que vous vérifiiez que Gerrit devrait apporter un changement.

git Push Origin master:refs/for/master

C'est peut-être le problème? Si vos modifications ne se trouvent pas sur votre version locale de la branche principale, vous ne poussez pas vos modifications. Essayez plutôt:

git Push Origin HEAD:refs/for/master

HEAD est un raccourci qui représente votre commit actuel dans git.

1
Brad

j'ai eu le même problème. Je viens de changer le message de validation et de pousser le code. C'était réussi.

1
schin chan

J'ai eu le même message d'erreur, mais les modifications que j'essayais de pousser étaient au-dessus des validations différentes de l'ensemble de modifications d'origine (a fait quelques tours de magie avec git cherry-pick et il semble que gerrit ne l'aimait pas). J'ai abandonné ma modification d'origine, puis l'ai rouverte lorsque j'ai réalisé que je pouvais résoudre le problème, mais j'ai échoué à envoyer à gerrit avec git review.

À ce stade, ma solution rapide a été d'abandonner la modification d'origine du site Web gerrit et de créer une nouvelle modification en supprimant le change-Id: sha1 dernière ligne du message de validation avec git commit --amend.

0
GabLeRoux

Avec ce message d'erreur, Gerrit refuse de pousser un commit en tant que nouvel ensemble de correctifs pour une modification, si la validation poussée est identique à l'ensemble de correctifs actuel de ce changement.

Un commit poussé est considéré comme identique à l'ensemble de correctifs actuel si

  • les fichiers dans le commit,
  • le message de validation,
  • l'auteur du commit et
  • les parents du commit

sont tous identiques.

0
Androina Yang

J'ai eu le même problème. En même temps, un autre commit n'a pas été fusionné avec master et était en révision gerrit et rebasé en gerrit. c'est-à-dire que le code a été poussé pour examen. rebasé en gerrit et révision en attente de terminer. Une fois le code révisé, j'ai pu pousser sans erreur.

0