Annuler git pull, comment ramener les repos à l’état ancien

Y a-t-il un moyen de revenir en arrière ou de défaire git pull pour que ma source / mise en pension revienne à un ancien état qui était avant de faire git pull? Je veux faire cela car il a fusionné certains fichiers que je ne voulais pas faire, mais seulement fusionner les autres fichiers restants. Donc, je veux récupérer ces fichiers, est-ce possible? Merci 🙂

EDIT Je veux annuler la fusion pour plus de précision. Après avoir vu des 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?

git pull va faire deux choses: il fait un git fetch et ensuite un git merge où il fusionne les twigs qui ont été configurées pour être fusionnées dans votre configuration.

Donc, ce que vous voulez faire, c’est annuler la fusion (annuler la récupération 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établir l’état précédent. Utilisez la commande git-reflog pour rechercher le SHA-1 de l’état précédent, puis réinitialisez-le.

Attention : git reset --hard supprime toutes les modifications non validées.

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

 git reset --hard a0d3fe6 

où on trouve a0d3fe6 en faisant

 git reflog 

et en regardant le point auquel vous voulez annuler.

Une manière plus moderne d’annuler une fusion est la suivante:

 git merge --abort 

Et la manière un peu plus ancienne:

 git reset --merge 

L’ancienne école décrite dans les réponses précédentes (avertissement: rejettera tous vos changements locaux):

 git reset --hard 

Mais en fait, il convient 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 de MERGE_HEAD , la fusion échouée peut être annulée avec git reset --merge mais pas nécessairement avec git merge --abort , elles ne sont donc pas seulement une ancienne et une nouvelle syntaxe pour la même chose . C’est pourquoi je trouve que git reset --merge est beaucoup plus utile dans le travail quotidien.

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 la validation à laquelle vous souhaitez revenir (clic droit), puis sélectionnez “Réinitialiser la twig principale ici”. Si vous n’avez pas de modifications non validées, choisissez l’option “difficile”.

ça marche première utilisation: git reflog

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

 git reset --hard HEAD@{1} 

Supposons que $COMMIT était le dernier identifiant de validation avant que vous ayez effectué git pull . Qu’est-ce que vous devez défaire le dernier pull est

git reset --hard $COMMIT

.

Prime:

En parlant de pull, je voudrais partager un truc intéressant,

git pull --rebase

Cette commande ci-dessus est la commande la plus utile de ma vie de git qui a permis de gagner beaucoup de temps.

Avant de pousser votre nouveau serveur vers le serveur, essayez cette commande et elle synchronisera automatiquement les dernières modifications du serveur (avec un fetch + fusion) et placera votre commit en haut de la page. Pas besoin de s’inquiéter de tirer / fusionner manuellement.

Trouvez des détails sur: http://gitolite.com/git-pull–rebase

vous pouvez faire git reset --hard ORIG_HEAD

puisque “tirer” ou “fusionner” définissez ORIG_HEAD comme étant l’état actuel avant d’effectuer ces actions.