web-dev-qa-db-fra.com

Impossible de pousser les modifications après avoir utilisé git reset --hard

J'ai eu une erreur et j'ai commis des modifications à git que je n'aurais pas dû commettre. Après avoir fait le commit, j'ai poussé mes changements. J'ai ensuite utilisé les commandes suivantes pour essayer de réinitialiser mes modifications.

 git reset --hard head

Maintenant, je veux pousser cette "réinitialisation" vers le référentiel distant avec cette commande:

git Push MyBranch

Mais je reçois cette erreur:

remote: error: denying non-fast-forward refs/heads/branch (you should pull first)

J'ai essayé d'utiliser cette commande sans succès:

git Push -f "Origin" 

Une idée de ce que je peux faire?

42
mans
git Push -f Origin myBranch 

devrait fonctionner (à condition que vous soyez conscient que cela peut être dangereux si MyBranch a déjà été récupéré par d'autres dans leur propre référentiel)

Remarque: si votre dépôt distant ('Origin') a son config défini avec

receive.denyNonFastForwards true

il refusera toute poussée non rapide (même forcée).
Voir " Existe-t-il un moyen de configurer le référentiel git pour rejeter 'git Push --force'? ".


Les rapports OP user654019

J'ai réussi à résoudre le problème cette fois en définissant denyNonFastForwards sur false et en utilisant -f pour forcer le Push

Si le PO n'avait pas accès au dépôt, il/elle devrait:

Par exemple:

$ git revert -m 1 [sha_of_C8]
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
 1 files changed, 0 insertions(+), 2 deletions(-)

revert a merge

Une discussion complète sur la façon d'annuler une fusion peut se trouve ici .

L'idée reste de générer uniquement de nouvelles commits, dont une annulant les modifications introduites par la validation de fusion.
Vous pouvez alors pousser ce nouveau commit, comme un changement rapide.

82
VonC

Vous devez spécifier quelle référence vous voulez pousser:

git Push -f Origin MyBranch
9
ralphtheninja