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?

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.)


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'.


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>

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.

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.