Je voudrais annuler mon git pull en raison de commits non désirés sur la télécommande Origin, mais je ne sais pas à quelle révision je dois revenir.
Comment puis-je simplement revenir à l'état avant que je ne tire le git sur l'origine distante?
Ou pour le rendre plus explicite que l'autre réponse:
git pull
oups?
git reset --keep HEAD@{1}
Les versions de git antérieures à 1.7.1 n'ont pas --keep
. Si vous utilisez une telle version, vous pouvez utiliser --hard
- mais l'opération est dangereuse car elle perd les modifications locales.
ORIG_HEAD est l'état précédent de HEAD, défini par des commandes pouvant avoir un comportement dangereux, afin qu'il soit facile de les inverser. Il est moins utile maintenant que Git ait refoc: HEAD @ {1} est à peu près équivalent à ORIG_HEAD (HEAD @ {1} est toujours la dernière valeur de HEAD, ORIG_HEAD est la dernière valeur de HEAD avant une opération dangereuse)
git reflog show
devrait vous montrer l'histoire de HEAD. Vous pouvez utiliser cela pour déterminer où vous étiez avant la pull
. Ensuite, vous pouvez reset
votre HEAD
à ce commit.
Cela a fonctionné pour moi.
git reset --hard ORIG_HEAD
Annuler une fusion ou une extraction:
$ git pull (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard (2)
$ git pull . topic/branch (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD (4)
Commander ceci: HEAD et ORIG_HEAD dans Git pour plus.
Trouvez le <SHA#>
pour le commit que vous voulez aller. Vous pouvez le trouver dans github ou en tapant git log
ou git reflog show
sur la ligne de commande, puis faites git reset --hard <SHA#>
De https://git-scm.com/docs/git-reset#Documentation/git-reset.txt-Undoamergeorpulleadirtytyingingtree
Annuler une fusion ou tirer à l'intérieur d'un arbre de travail sale
$ git pull (1) Auto-merging nitfol Merge made by recursive. nitfol | 20 +++++---- ... $ git reset --merge ORIG_HEAD (2)
Même si vous avez des modifications locales dans votre arbre de travail, vous pouvez dire en toute sécurité
git pull
lorsque vous savez que la modification dans l'autre branche ne les chevauche pas.Après avoir inspecté le résultat de la fusion, il est possible que le changement dans l’autre branche ne soit pas satisfaisant. Lancer
git reset --hard ORIG_HEAD
vous permettra de revenir où vous étiez, mais vos modifications locales seront ignorées, ce que vous ne voudrez pas.git reset --merge
conserve vos modifications locales.
Voir aussi https://stackoverflow.com/a/30345382/62169