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