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?
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?
Réponses:
C'est la solution la plus sûre:
git stash
Vous pouvez désormais faire ce que vous voulez sans craindre les conflits.
Par exemple:
git checkout origin/master
Si vous souhaitez inclure les modifications à distance dans la branche principale, vous pouvez faire:
git reset --hard origin/master
Cela vous fera brancher "master" pour pointer vers "origin / master".
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
git checkout remote/branch -- a/file b/another/file
Si vous souhaitez faire cela pour des sous-arbres étendus et que vous souhaitez à la place affecter directement l'index, utilisez
git read-tree remote/branch:subdir/
Vous pouvez ensuite (éventuellement) mettre à jour votre copie de travail en faisant
git checkout-index -u --force
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:
git checkout -- path/filename
Je retirerais le fichier distant du "master" (le référentiel distant / d'origine) comme ceci:
git checkout master <FileWithPath>
Exemple: git checkout master components / indexTest.html
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
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
.