Comment revenir à la version du fichier de la branche principale d'origine


425

Je suis dans la branche principale de mon ordinateur local d'une branche principale clonée d'un dépôt à partir d'un serveur distant.

J'ai mis à jour un fichier et je souhaite revenir à la version d'origine à partir de la branche maître distante.

Comment puis-je faire ceci?

Réponses:


874

En supposant que vous n'avez pas validé le fichier ou que vous ne l'avez pas ajouté à l'index, alors:

git checkout -- filename

En supposant que vous l'avez ajouté à l'index, mais que vous ne l'avez pas validé, alors:

git reset HEAD filename
git checkout -- filename

En supposant que vous l'ayez commis, alors:

git checkout origin/master filename

En supposant que vous vouliez supprimer tous les commits de votre branche (TRÈS DESTRUCTIF):

git reset --hard origin/master

43
Votre troisième option est très différente de vos deux premières options en ce qu'elle touche tous les fichiers et pas seulement le seul fichier. Vous voudrez peut-être le souligner plus explicitement. Aussi pourquoi ne pas recommander git checkout HEAD filenameet git checkout origin/master filenamepour les options un et deux, ce serait plus cohérent?
— CB Bailey

5
@CharlesBailey: J'ai ajouté l' git checkout origin/master filenameoption à la réponse de gahooa.
— Frank

2
@cilphex, il supprime tous les commits de votre branche actuelle
— WattsInABox

1
J'ai accidentellement rebasé branchA hors de branchB et j'ai dû réinitialiser la branche locale principale. git reset --hard masterseule était ma solution car je ne voulais pas atteindre l'origine. Merci.
— taco

3
@gahooa Cela devrait probablement être git checkout - nom de fichier, et si le fichier est appelé "maître", alors vous obtiendrez un comportement qui n'était pas prévu.
— user2602152

50

J'ai rencontré le même problème et suis tombé sur ce fil, mais mon problème était avec upstream. La commande ci-dessous git a fonctionné pour moi.

Syntaxe

git checkout {nom-distant} / {branche} - {fichier / chemin.js}

Exemple

git checkout en amont / develop - public / js / index.js


0

Si vous ne l'avez pas encore validé dans la branche master, c'est simple:

  • descendre de la branche principale (comme git checkout -b oops/fluke/dang)
  • validez vos modifications (comme git add -u; git commit;)
  • revenir en arrière de la branche principale (comme git checkout master)

Vos modifications seront enregistrées dans la branche oops / fluke / dang; le maître sera comme il était.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.