J'ai joué git commit
suivi d'un git push
. Comment puis-je annuler cette modification sur les référentiels locaux et distants?
$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael [email protected]>
Date: Tue Jun 11 12:24:23 2011 -0700
git
git-push
git-commit
Michael
la source
la source
git reset --hard <the-sha-you-want-to-return-to>
.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:
puis envoyez-le à la télécommande comme d'habitude:
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.
la source
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: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:
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:
tu devrais voir comme
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 .
la source
git reset HEAD~1
si vous ne voulez pas que vos modifications disparaissent (modifications non mises en scène). Changez, engagez et repoussezgit push -f [origin] [branch]
la source
Vous pouvez faire un rebase interactif:
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
la source
Essayez d'utiliser
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
la source
Alternativement:
Forcer la branche principale du référentiel distant d'origine au parent du dernier commit
la source