Ne peut pas pousser les changements après avoir utilisé git reset -- hard
j'ai commis une erreur et j'ai apporté des changements à git que je n'aurais pas dû faire. Après avoir fait l'engagement, 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 ce 'reset' au dépôt distant avec cette commande:
git push MyBranch
Mais j'obtiens 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?
2 réponses
git push -f origin myBranch
devrait fonctionner (à condition que vous sachiez que cela peut être dangereux si MyBranch a déjà été récupéré par d'autres dans leur propre repo)
Note: si votre Remote repo ('origin') a son config set avec
receive.denyNonFastForwards true
il niera toute poussée Non rapide vers l'avant (même si elle est forcée).
Voir " y a-t-il un moyen de configurer le dépôt git pour rejeter 'git push --force'? ".
Le OP user654019 rapports
j'ai réussi à résoudre le problème cette fois en réglant
denyNonFastForwards
àfalse
et en utilisant-f
pour forcer la poussée
Si l'OP n'ont pas accès à des pensions de titres, il/elle devra:
- réinitialiser la tête locale à sa position initiale (voir "
git reset --hard?
"):
git reset HEAD@{1}
- faire un nouvelle commit qui annuler votre fusion, comme décrit dans la ProGit livre , avec
git revert
:
git revert -m 1 HEAD~
(dans votre cas)
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(-)
Une discussion complète sur la façon de revenir à une fusion peut ici .
l'idée reste de générer seulement nouveau commits, y compris une inversion des changements introduits par la commit de fusion.
Vous pouvez alors pousser ce nouveau commit, comme un changement rapide en avant.
vous devez spécifier quelle réf vous voulez pousser:
git push -f origin MyBranch