Question Annuler git pull, comment apporter des repos à l'ancien état


Y at-il un moyen de revenir ou d'annuler git pull afin que ma source / repos viendra à l'ancien état qui était avant de faire git pull? Je veux faire cela parce qu'il a fusionné certains fichiers que je ne voulais pas faire, mais seulement fusionner d'autres fichiers restants. Donc, je veux récupérer ces fichiers, est-ce possible? Merci :)

EDIT Je veux annuler git merge pour clarification. Après avoir vu quelques réponses, je l'ai fait

git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...

Maintenant, que dois-je faire? Faire git reset --hard  est OK? Je ne veux pas le revisser, donc demander des étapes détaillées?


735
2017-08-03 16:42


origine


Réponses:


git pull fera deux choses: il fait git fetch puis un git merge où il fusionne les branches qui ont été configurées pour être fusionnées dans votre config.

Donc ce que vous voulez faire est d'annuler la fusion (défaire le fetch n'a pas beaucoup de sens et ne devrait pas être nécessaire).

Pour ce faire, vous pouvez essayer d'utiliser git reset --hard pour réinitialiser à un état antérieur. Utilisez le git-reflog commande pour trouver le SHA-1 de l'état précédent et ensuite réinitialiser à celui-ci.

Attention: git reset --hard supprime tous les changements non validés.


1022
2017-08-03 16:47



Identique à la réponse de jkp, mais voici la commande complète:

git reset --hard a0d3fe6

où a0d3fe6 est trouvé en faisant

git reflog

et en regardant le point auquel vous voulez revenir.


227
2017-07-22 00:39



Une façon plus moderne d'annuler une fusion est la suivante:

git merge --abort

Et la façon légèrement plus ancienne:

git reset --merge

La méthode old-school décrite dans les réponses précédentes (avertissement: annulera toutes vos modifications locales):

git reset --hard

Mais en fait, il vaut la peine de noter que git merge --abort est seulement équivalent à git reset --merge étant donné que MERGE_HEAD est présent. Cela peut être lu dans la commande git help for merge.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

Après une fusion échouée, quand il n'y a pas MERGE_HEAD, la fusion échouée peut être annulée avec git reset --merge mais pas nécessairement avec git merge --abort, donc ils ne sont pas seulement ancienne et nouvelle syntaxe pour la même chose. C'est pourquoi je trouve git reset --merge être beaucoup plus utile dans le travail quotidien.


74
2018-05-20 09:17



Si vous avez gitk (essayez d'exécuter "gitk --all depuis votre ligne de commande git"), c'est simple. Il suffit de l'exécuter, sélectionnez le commit que vous souhaitez annuler (clic droit), et sélectionnez "Réinitialiser la branche principale ici". Si vous n'avez pas de modifications non validées, choisissez l'option "difficile".


35
2017-08-03 16:49



Ça marche première utilisation: git reflog

trouver votre SHA de votre état de previus et faire (HEAD @ {1} est un exemple)

git reset --hard HEAD@{1}

35
2018-03-08 17:00



Supposer $COMMIT était le dernier identifiant de validation avant que vous avez effectué git pull. Ce dont vous avez besoin pour annuler la dernière traction est

git reset --hard $COMMIT

.

Prime:

En parlant de tirer, je voudrais partager un tour intéressant,

git pull --rebase

Cette commande ci-dessus est la commande la plus utile dans ma vie de git qui a sauvé beaucoup de temps.

Avant de pousser votre nouvelle validation sur le serveur, essayez cette commande et elle synchronisera automatiquement les dernières modifications du serveur (avec une fetch + fusion) et placera votre commit en haut dans le journal git. Pas besoin de s'inquiéter de la traction / fusion manuelle.

Trouvez les détails à: http://gitolite.com/git-pull--rebase


18
2017-12-23 15:55



tu peux faire git reset --hard ORIG_HEAD

puisque "pull" ou "merge" positionne ORIG_HEAD comme étant l'état actuel avant de faire ces actions.


7
2017-08-19 16:52