Donc, vous avez commis vos modifications locales à votre dépôt local. Ensuite, pour obtenir les modifications distantes dans votre dépôt local sans apporter de modifications à vos fichiers locaux, vous pouvez utiliser git fetch
. En fait, git pull
est une opération en deux étapes : un git fetch
non destructif suivi d'un git merge
. Voir Quelle est la différence entre 'git pull' et 'git fetch' ? pour plus de discussion.
Exemple détaillé :
Supposez que votre dépôt soit comme ceci (vous avez fait des changements test2
) :
* ed0bcb2 - (HEAD, master) test2
* 4942854 - (origin/master, origin/HEAD) first
Et le dépôt origin
est comme ceci (quelqu'un d'autre a commis test1
) :
* 5437ca5 - (HEAD, master) test1
* 4942854 - first
À ce stade, git se plaindra et vous demandera de d'abord faire un pull si vous essayez de pousser votre test2
vers le dépôt distant. Si vous voulez voir ce qu'est test1 sans modifier votre dépôt local, exécutez ceci :
$ git fetch
Votre dépôt local résultant serait comme ceci :
* ed0bcb2 - (HEAD, master) test2
| * 5437ca5 - (origin/master, origin/HEAD) test1
|/
* 4942854 - first
Maintenant vous avez les modifications distantes dans une autre branche, et vous gardez vos fichiers locaux intacts.
Quelle est la prochaine étape ? Vous pouvez faire un git merge
, qui aura le même effet que git pull
(lorsqu'il est combiné avec le précédent git fetch
), ou, comme je préférerais, faire un git rebase origin/master
pour appliquer vos changements au-dessus de origin/master
, ce qui vous donne un historique plus propre.