Je ne connais pas vraiment le fonctionnement de git. J'ai poussé un commit par erreur et je veux l'annuler. j'ai fait un
git reset --hard HEAD~1
Attention Googlers: Cela annule non seulement la validation, mais annule toutes les modifications de fichier!
et maintenant le projet est rétabli sur ma machine, mais pas sur github. Si j'essaie de pousser ce code, j'obtiens l'erreur "Votre branche est derrière" Origin/master "par 1 commit et peut être transmise rapidement. Comment supprimer ce commit de github?
Tu peux faire git Push --force
mais sachez que vous réécrivez l'historique et que toute personne utilisant le dépôt aura des problèmes avec cela.
Si vous souhaitez éviter ce problème, n'utilisez pas la réinitialisation, mais utilisez plutôt git revert
Cet article a une excellente explication sur la façon de procéder divers scénarios (où un commit a été fait ainsi que le Push OR juste un commit, avant le Push):
http://christoph.ruegg.name/blog/git-howto-revert-a-commit-already-pushed-to-a-remote-reposit.html
De l'article, la commande la plus simple que j'ai vu pour annuler un commit précédent par son id de commit , était:
git revert dd61ab32
Ou vous pouvez essayer d'utiliser git revert http://www.kernel.org/pub/software/scm/git/docs/git-revert.html . Je pense que quelque chose comme git revert HEAD~1 -m 1
annulera votre dernier commit (s'il s'agit toujours du dernier commit).
Incapable de commenter les réponses des autres, je fournirai quelques informations supplémentaires.
Si vous voulez revert
le dernier commit, vous pouvez utiliser git revert head
. head
fait référence au commit le plus récent de votre branche.
La raison pour laquelle vous utilisez head~1
Lorsque vous utilisez reset
est que vous dites à Git de "supprimer toutes les modifications dans les validations après" (reset --hard
) "La validation avant la tête" ( head~1
).
reset
est sur un commit, revert
est sur un commit.
Comme l'a souligné AmpT, vous pouvez également utiliser le commit SHA pour l'identifier, plutôt que de compter à quelle distance de head
il est. Le SHA peut être trouvé dans les journaux (git log
) Et de nombreuses autres façons.
Vous pouvez également toujours utiliser d'autres pointeurs dans Git. par exemple. une balise ou une branche. Et peut également utiliser toutes ces autres façons amusantes pour référencer les validations https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html#_specifying_revisions
Je pense que vous devez pousser un commit de retour. Donc pull
de github à nouveau, y compris le commit que vous souhaitez annuler, puis utilisez git revert
et Poussez le résultat.
Si vous ne vous souciez pas que les clones d'autres personnes de votre référentiel github soient cassés, vous pouvez également supprimer et recréer la branche principale sur github après votre reset
: git Push Origin :master
.