git remplace la version locale par la version distante
148
Comment puis-je dire à git d'ignorer mon fichier local et de prendre celui de ma branche distante sans essayer de fusionner et de provoquer des conflits?
Il serait utile que vous fournissiez plus de détails. Voulez-vous adopter le contenu de tous les fichiers de la branche distante, ou seulement certains des fichiers (c'est-à-dire conserver certaines versions / modifications locales)? Avez-vous une histoire locale que vous souhaitez conserver? (Cela peut être important s'il existe d'autres succursales ou référentiels qui ont déjà incorporé votre histoire locale.) Si vous souhaitez conserver votre histoire locale, que prévoyez-vous d'en faire plus tard? (Vous pouvez laisser une balise pointant vers l'historique local et simplement réinitialiser votre branche à ce que la télécommande a, ou vous pourriez vouloir «fusionner la leur»).
Cela vaut peut-être la peine de souligner que cela détachera HEAD - le questionneur préférera peut-être rester sur la branche avecgit stash; git fetch origin; git reset --hard origin/master
Mark Longair
10
Je pense que le commentaire de Mark Longair est la réponse réelle à cette question
cela a été la réponse la plus utile pour moi +1
Andres
Comment revenir à l'état d'avant le git stash? git stash listest vide.
Leo
Je veux te faire un câlin
Ugur Kazdal
45
Je comprends la question comme ceci: vous voulez remplacer complètement le contenu d'un fichier (ou d'une sélection) en amont. Vous ne voulez pas affecter directement l'index (vous passerez donc par add + commit comme d'habitude).
Je crois comprendre que, par exemple, vous avez enregistré à tort un fichier que vous aviez mis à jour à des fins de test uniquement. Ensuite, lorsque vous exécutez "git status", le fichier apparaît comme "Modified" et vous dites quelques mots grossiers. Vous voulez simplement récupérer l'ancienne version et continuer à fonctionner normalement.
Dans ce scénario, vous pouvez simplement exécuter la commande suivante:
Pour moi a fonctionné comme ceci "git checkout remotes / origin / master <my-file>"
saravanakumar
4
Utilisez l' option -sou --strategycombinée à l' -Xoption. Dans votre question spécifique, vous souhaitez conserver tous les fichiers distants et remplacer les fichiers locaux du même nom.
Remplacez les conflits par la version distante
git merge -s recursive -Xtheirs upstream/master
utilisera la version du référentiel distant de tous les fichiers en conflit.
Remplacez les conflits par la version locale
git merge -s recursive -Xours upstream/master
utilisera la version du référentiel local de tous les fichiers en conflit.
git merge -s their
.Réponses:
C'est la solution la plus sûre:
Vous pouvez désormais faire ce que vous voulez sans craindre les conflits.
Par exemple:
Si vous souhaitez inclure les modifications à distance dans la branche principale, vous pouvez faire:
Cela vous fera brancher "master" pour pointer vers "origin / master".
la source
git stash; git fetch origin; git reset --hard origin/master
git stash
?git stash list
est vide.Je comprends la question comme ceci: vous voulez remplacer complètement le contenu d'un fichier (ou d'une sélection) en amont. Vous ne voulez pas affecter directement l'index (vous passerez donc par add + commit comme d'habitude).
Faites simplement
Si vous souhaitez faire cela pour des sous-arbres étendus et que vous souhaitez à la place affecter directement l'index, utilisez
Vous pouvez ensuite (éventuellement) mettre à jour votre copie de travail en faisant
la source
Je crois comprendre que, par exemple, vous avez enregistré à tort un fichier que vous aviez mis à jour à des fins de test uniquement. Ensuite, lorsque vous exécutez "git status", le fichier apparaît comme "Modified" et vous dites quelques mots grossiers. Vous voulez simplement récupérer l'ancienne version et continuer à fonctionner normalement.
Dans ce scénario, vous pouvez simplement exécuter la commande suivante:
la source
Je retirerais le fichier distant du "master" (le référentiel distant / d'origine) comme ceci:
Exemple: git checkout master components / indexTest.html
la source
Utilisez l' option
-s
ou--strategy
combinée à l'-X
option. Dans votre question spécifique, vous souhaitez conserver tous les fichiers distants et remplacer les fichiers locaux du même nom.Remplacez les conflits par la version distante
utilisera la version du référentiel distant de tous les fichiers en conflit.
Remplacez les conflits par la version locale
utilisera la version du référentiel local de tous les fichiers en conflit.
la source