Les réponses données jusqu'à présent ne sont pas idéales car elles nécessitent beaucoup de travail inutile pour résoudre les conflits de fusion, ou elles font trop d'hypothèses qui sont souvent fausses. Voilà comment le faire parfaitement. Le lien est vers mon propre site.
Vous avez des modifications non validées sur my_branchlesquelles vous souhaitez vous engager master, sans valider toutes les modifications de my_branch.
Exemple
git merge master
git stash -u
git checkout master
git stash apply
git reset
git add example.js
git commit
git checkout .
git clean -f -d
git checkout my_branch
git merge master
git stash pop
Explication
Commencez par fusionner masterdans votre branche, car vous devrez le faire de toute façon, et c'est maintenant le meilleur moment pour résoudre tout conflit.
L' -uoption de (aka --include-untracked) en git stash -uvous empêche de perdre des fichiers non suivis quand vous faites plus tard git clean -f -ddans les master.
Après, git checkout masteril est important de ne PAS le faire git stash pop, car vous aurez besoin de cette cachette plus tard. Si vous pop la planque créé my_branchpuis faites git stashen master, vous causer des conflits de fusion inutiles lorsque vous appliquez plus tard que dans Stash my_branch.
git resetmet en scène tout ce qui en résulte git stash apply. Par exemple, les fichiers qui ont été modifiés dans la cachette mais qui n'existent pas sont mastermis en scène comme des conflits «supprimés par nous».
git checkout .et git clean -f -dsupprimez tout ce qui n'est pas validé: toutes les modifications apportées aux fichiers suivis et tous les fichiers et répertoires non suivis. Ils sont déjà enregistrés dans la cachette et s'ils sont laissés dans, mastercela provoquerait des conflits de fusion inutiles lors du retour à my_branch.
Le dernier git stash popsera basé sur l'original my_branchet ne provoquera donc aucun conflit de fusion. Cependant, si votre cachette contient des fichiers non suivis que vous vous êtes engagé à maîtriser, git se plaindra qu'il "n'a pas pu restaurer les fichiers non suivis à partir de la cachette". Pour résoudre ce conflit, supprimez ces fichiers de votre arborescence de travail, puis git stash pop, git add .et git reset.