web-dev-qa-db-fra.com

Comment annuler un tirage?

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?

220
Kartins

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.


Au commentateur

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)

359
sehe

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.

61
Noufal Ibrahim

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.

24

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#>

15
Nina

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

0
Risadinha