web-dev-qa-db-fra.com

Git Push remote rejeté {changement ### fermé}

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.

37
jonney

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.

34
Johan

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:

  1. git commit --amend
  2. supprimer le numéro d'identification
  3. sauvegarder et quitter
  4. un nouvel identifiant de changement sera ajouté à la validation. il peut être vérifié par le journal git.
  5. Poussez à nouveau
14
suprith

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é!

6
Sterling Bourne

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

3
user77115

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?

1
David Pursehouse

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.

1
twalberg

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:

  1. savoir quels fichiers ont été validés dans change 14823
  2. trouvez votre plus ancien commit et faites un soft reset à son parent. Attention, si vous effectuez une réinitialisation matérielle, vous risquez de perdre tous vos commits.
  3. essayez de valider vos modifications une nouvelle fois, mais pendant ce temps sans les fichiers de changez 14823

J'espère que c'est utile.

1
Hazhir

Solution pour les utilisateurs d'Egit:

  1. Cliquez sur le bouton Modifier  enter image description here


  1. Supprimer Change-Id de la zone de message de validation à l'aide du bouton de retour arrière (ce sera quelque chose de différent de cette capture d'écran)
  2. Cliquez sur le bouton 'Ajouter un identifiant de changement'  enter image description here

  3. Commettez vos modifications et appuyez.

0
burakhan alkan

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

0
r11

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
0
Phil

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.

Voir: https://www.clock.co.uk/insight/deleting-a-git-commit

0
nurieta

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é.

0
ebneter

Mon supérieur et moi travaillons plus d’une heure pour trouver une solution. J'ai donc essayé ci-dessous, cela fonctionne pour moi.

  1. Sauvegardez toutes les branches du dossier .git/logs/refs/heads/{{branche}} et des fichiers mis à jour dans le référentiel
  2. Supprimé les branches qui causent une erreur
  3. Créer une branche "git branch '{{nouveau nom de branche}}" "
  4. déplacer les fichiers repo dans le dossier approprié
  5. git commit -m "{{commit message}}"
  6. git Push Origin HEAD: réfs/pour/master

Tout devrait être bien et bien fait

0

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:

  • b49c0f91744cb6f863616976c4fb4157c7af4b8c L'invite n'est pas correcte lorsque vous activez le partage de connexion USB avec le Wi-Fi connecté.
  • eb47ef919064aff516ced4bbd9d8ade0ed34b107 Aide de la connexion USB rapide lors de la première activation du WiFi hostpot
  • 753668be1207baa514be1bbd985f3db2d6317608 Correction d'un bogue de notification d'arrêt d'urgence.

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.

0
Saint

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.

0
qneill

Essayez ceci . Git Push - non mince Origine xxxxxx: refs/pour/sprint/yyyyyy

0
keylan