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?

mrblah
la source

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
gahooa
la source
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

Venkat.R
la source
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.

pic commun
la source