Forcer l'écrasement du fichier local avec le contenu du référentiel d'origine?

224

Je veux obtenir le dernier fichier qui se trouve dans le référentiel et écraser ce que j'ai localement. Comment puis-je faire cela avec le client git?

Blankman
la source

Réponses:

443

Si vous souhaitez remplacer un seul fichier:

git fetch
git checkout origin/master <filepath>

Si vous souhaitez remplacer tous les fichiers modifiés:

git fetch
git reset --hard origin/master

(Cela suppose que vous travaillez masterlocalement et que vous souhaitez les modifications sur l'origine master- si vous êtes sur une branche, remplacez-le à la place.)

ambre
la source
Cela a fait le contraire. Il a écrasé le référentiel avec mes fichiers locaux par erreur.
C_Rod
git fetch git reset --hard origin/masterou/<branch name>
adrian filipescu
C'est super ... Exactement ce que je cherchais. Merci
Thiago Passos
Je ne sais pas ce qu'a fait @C_Rod, mais cela ne peut pas affecter le référentiel
Brad Mace
26

Version la plus simple, en supposant que vous travaillez sur la même branche que le fichier que vous souhaitez:

git checkout path/to/file.

Je le fais si souvent que j'ai un alias défini sur gc='git checkout'.

JM Janzen
la source
4
Simple, élégant et fait le travail. N'oubliez pas de 'git fetch' avant.
Almir Campos
6
git checkout path/to/filetravaillé pour moi. De plus, j'ai trouvé ce diagramme très utile pour comprendre conceptuellement ce qui git checkoutse passe. lien
Cale Sweeney
9

Cela a fonctionné pour moi:

git reset HEAD <filename>
arn-arn
la source
J'ai vu pas mal de solutions différentes mais celle-ci est la plus efficace, merci
Calvin Zhou
3

La synchronisation complète a peu de tâches:

  • annuler des changements
  • suppression de nouveaux fichiers
  • obtenir les dernières informations du référentiel distant

git reset HEAD --hard

git clean -f

git pull origin master

Ou bien, ce que je préfère, c'est que je peux créer une nouvelle branche avec la dernière de la télécommande en utilisant:

git checkout origin/master -b <new branch name>

origin est ma référence de référentiel distant et master est mon nom de branche considéré. Ceux-ci peuvent être différents des vôtres.

Chand Priyankara
la source