j'ai des problèmes pour transférer mes modifications de mon maître local à un maître distant à cause de cette erreur:
remote: Processing changes: refs: 1, done
To ssh://[email protected]:29418/xxxxxx
! [remote rejected] HEAD -> refs/for/master (change 14823 closed)
error: failed to Push some refs to 'ssh://[email protected]:29418/xxxxxx'
aucune idée de comment je peux résoudre ce problème?
le statut git indique que ma branche est en avance sur Origin/master de 5 commits.
J'ai reçu le même message. Et c’est parce que j’ai réussi à obtenir le même ID de changement pour deux commits. Peut-être en raison de la cueillette de cerises ou similaire entre mes branches locales. Résolu en supprimant l'identificateur de modification du message de validation, un nouvel identifiant a ensuite été ajouté par le crochet de validation.
Votre ID de modification de validation a expiré, c’est-à-dire que la révision 14823 est fermée. vous ne pouvez pas pousser à la même chose.
Faites ceci pour résoudre le problème:
git commit --amend
J'ai trouvé la page suivante qui explique exactement pourquoi vous ne pouvez pas appliquer vos modifications à l'origine en raison de l'erreur de modification XXXXX fermée: https://git.Eclipse.org/r/Documentation/errorchange-closed html
À votre santé!
Vous avez 5 commits.
Tous ont un fichier appelé "Message de validation" (utilisé par Gerrit).
Un de ces fichiers a un mauvais "Change-Id" qui a déjà été accepté
et fusionné en maître par Gerrit, et ne peut donc plus être utilisé.
Un correctif consiste à fusionner les 5 commits en un,
.__ et dans le processus,
supprimer le "Change-Id" dans le fichier "Commit Message".
Dans mon cas, j'avais 3 commits, donc j'ai:
git rebase -i HEAD ~ 3
Il existe d'autres moyens de fusionner plusieurs commits:
Squash mon dernier X commet ensemble en utilisant Git
le statut git indique que ma branche est en avance sur Origin/master de 5 commits.
tout ce que je fais est d'aller chercher le dernier code. faire quelques ajustements et le pousser.
Quels sont ces 5 commits? Sont-ils tous à vous?
Le changement 14823 correspond-il à l'un de ces 5 commits? Quel est son statut dans Gerrit?
Le message change 14823 closed
ne provient pas de Vanilla git
. Cela indique que quiconque maintient ce référentiel a une mise à jour ou un raccord post-mise à jour qui évalue votre diffusion et la refuse en raison de la stratégie locale (j'imagine que vous ajoutez des validations supplémentaires à un problème qui a déjà été marqué comme terminé/fermé ). Vous aurez besoin de savoir quelles sont ces règles et de savoir si vous devez rouvrir les modifications pour pouvoir y ajouter des validations, ou si vous devez créer une nouvelle demande de modification et (probablement) rebaser votre travail. il.
dans mon cas, j'avais 2 commits, le premier commettait le mien mais le second ne l'était pas, alors je le répare de cette façon:
J'espère que c'est utile.
Solution pour les utilisateurs d'Egit:
Cela peut arriver s'il existe déjà un changement sur gerrit qui a été fusionné ou même abandonné. Si abandonné, ce qui était mon cas, restaurez cette modification sur gerrit et appliquez la nouvelle modification en plus de la modification restaurée.
https://gerrit-review.googlesource.com/Documentation/error-change-closed.html
Si vous avez redéfini et sélectionné des commit (s) liés à des révisions fermées (fusionnées ou abandonnées) entre-temps, vous pouvez simplement vous rebaser à nouveau et au lieu de les sélectionner, supprimez les commit. liés à l'examen. Vous devriez alors pouvoir repousser sans problème. Je suis en total désaccord avec les suggestions de lecture/modification des Change-Ids . Détaillant les commandes git, ceci donnerait:
git fetch; git rebase Origin/a_branch --interactive
Choisir chaque commit ........ Résoudre les conflits puis ajouter git ...
git rebase --continue
git Push Origin HEAD:refs/for/refs/heads/a_branch
-> télécommande rejetée ... modification ### fermée
Puis procédez comme suit:
git fetch; git rebase Origin/a_branch --interactive
choisir tous les commit sauf ceux liés au changement ### qui devraient être supprimés . Vous ne devriez pas avoir de conflit et obtenir une rebase réussie immédiatement (les conflits étaient déjà résolus dans la rebase précédente). Ensuite:
git Push Origin HEAD:refs/for/refs/heads/a_branch
Les problèmes peuvent être multiples, mais si le problème est que votre modification se situe au-dessus d'un commit obsolète (pour une raison quelconque, il aurait pu être fusionné), vous devez simplement:
Étape 1: Recherchez le commit avant le commit que vous souhaitez supprimer du journal git
Étape 2: Valider cette validation avec git checkout
Étape 3: Créez une nouvelle branche en utilisant votre commande actuelle. Git checkout -b
Étape 4: Vous devez maintenant ajouter le commit après le commit supprimé git cherry-pick
Maintenant, envoyez vos modifications à gerrit, il devrait les accepter.
Vous appuyez sur gerrit, un outil de révision de code, comme indiqué par l'URL (ssh: //[email protected]: 29418/xxxxxx) et le "HEAD -> refs/for/master " message. Vous devez consulter le responsable du référentiel auquel vous essayez d'appliquer Push afin de comprendre pourquoi le changement est rejeté.
Mon supérieur et moi travaillons plus d’une heure pour trouver une solution. J'ai donc essayé ci-dessous, cela fonctionne pour moi.
Tout devrait être bien et bien fait
Je rencontre aussi ce problème quand je pousse mon commit et que le terminal dit:
! [rejetée à distance] HEAD -> refs/for/Android_ui.lnx.1.2.c1-dev (modification 1692698 close)
Je vais sur le site de révision pour voir le changement correspondant 1692698, le message de validation est le suivant: "Demander l'aide de la fonction USB tethering lors de la première activation du WiFi hostpot"
Puis affichez les logs de commit dans le terminal:
La raison pour laquelle Push échoue est que le changID actuel est identique à celui de la validation eb47ef919064aff516ced4bbd9d8ade0ed34b107. donc je sauvegarde la modification en cours et réinitialise dur à 753668be1207baa514be1bbd985f3db2d6317608, puis applique la modification de sauvegarde, ajoute, valide et Push successivement enfin.
J'espère que cela peut résoudre votre problème.
Vous avez 5 commits.
Chaque validation comporte un "message de validation" pouvant contenir une chaîne "Change-Id:" identifiant la demande de modification à laquelle la validation appartient pour Gerrit (voir https://git.Eclipse.org/r/Documentation/user changeid.html )
Dans ce cas, une (ou plusieurs) des demandes de changement identifiées par les chaînes Change-Id sont déjà fusionnées ou abandonnées par Gerrit et ne peuvent donc pas être réutilisées.
Vous devez modifier le message de validation pour un (ou plusieurs) des validations avant de les pousser (voir http://schacon.github.io/history.html ), soit enlevant les créez de nouvelles demandes de changement ou les modifiez afin qu'ils identifient les demandes de changement Gerrit correctes pour chaque validation.
Essayez ceci . Git Push - non mince Origine xxxxxx: refs/pour/sprint/yyyyyy