Réponses:
git reset --hard HEAD~1
git push -f <remote> <branch>
(Exemple pousser: git push -f origin bugfix/bug123
)
Cela annulera le dernier commit et poussera l'historique mis à jour vers la télécommande. Vous devez passer le -f
car vous remplacez l'historique en amont dans la télécommande.
git log --decorate --oneline
pour savoir où pointe votre HEAD.
git reset HEAD~1
si vous ne voulez pas que vos modifications disparaissent (modifications non mises en scène). Changer, valider et pousser à nouveaugit push -f [origin] [branch]
Généralement, faites un commit "inverse", en utilisant:
git revert 364705c
puis envoyez-le à la télécommande comme d'habitude:
git push
Cela ne supprimera pas le commit: il crée un commit supplémentaire qui annule ce que le premier commit a fait. Autre chose, pas vraiment sûr, surtout quand les changements ont déjà été propagés.
git reset
n'est accepté que si vous n'avez toujours pas transmis les modifications au serveur.
Tout d'abord, détendez-vous.
"Rien n'est sous notre contrôle. Notre contrôle n'est qu'une illusion.", "L'erreur est humaine"
Je comprends que vous avez involontairement poussé votre code vers remote-master
. Ça va aller.
1. Dans un premier temps, obtenez la SHA-1
valeur du commit que vous essayez de renvoyer, par exemple, commit sur la branche master. lance ça:
git log
vous verrez un tas de 'f650a9e398ad9ca606b25513bd4af9fe ...' comme des chaînes avec chacun des commits. copiez ce numéro à partir du commit que vous souhaitez retourner .
2. Maintenant, saisissez la commande ci-dessous:
git reset --hard your_that_copied_string_but_without_quote_mark
vous devriez voir un message comme "HEAD is now at". vous êtes clair. Ce qu'il vient de faire, c'est de refléter ce changement localement.
3. Maintenant, saisissez la commande ci-dessous:
git push -f
tu devrais voir comme
"avertissement: push.default n'est pas défini; sa valeur implicite a changé dans ..... ... Total 0 (delta 0), réutilisé 0 (delta 0) ... ... your_branch_name -> master (mise à jour forcée) . "
Maintenant, vous êtes tous clairs. Vérifiez à nouveau le maître avec "git log", votre fixed_destination_commit devrait être en haut de la liste.
Vous êtes les bienvenus (à l'avance;))
METTRE À JOUR:
Maintenant, les changements que vous aviez faits avant que tout cela ne commence, ont maintenant disparu. Si vous voulez ramener ces travaux à nouveau, c'est possible. Merci à git reflog et aux commandes git cherry-pick .
Pour cela, je suggère de suivre ce blog ou cet article .
Vous pouvez faire un rebase interactif:
git rebase -i <commit>
Cela fera apparaître votre éditeur par défaut. Supprimez simplement la ligne contenant le commit que vous souhaitez supprimer pour supprimer ce commit.
Vous aurez bien sûr besoin d'accéder au référentiel distant pour y appliquer également cette modification.
Voir cette question: Git: supprimer les validations sélectionnées du référentiel
Essayez d'utiliser
git reset --hard <commit id>
Remarque: ici, l'ID de validation sera l'ID de la validation à laquelle vous souhaitez accéder, mais pas l'ID que vous souhaitez réinitialiser. ce fut le seul point où je me suis également retrouvé coincé.
puis poussez
git push -f <remote> <branch>
git reset --hard <the-sha-you-want-to-return-to>
.