Le risposte fornite finora non sono ideali perché richiedono molto lavoro inutile per risolvere i conflitti di unione o fanno troppe ipotesi che sono spesso false. Ecco come farlo perfettamente. Il link è al mio sito.
Hai apportato modifiche non impegnate su my_branchcui vuoi impegnarti master, senza eseguire tutte le modifichemy_branch .
Esempio
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
Spiegazione
Inizia unendoti masteral tuo ramo, poiché alla fine dovrai farlo comunque, e ora è il momento migliore per risolvere eventuali conflitti.
L' -uopzione (aka --include-untracked) git stash -uti impedisce di perdere file non tracciati quando successivamente lo fai git clean -f -dall'interno master.
Dopo git checkout masterè importante che NON lo faccia git stash pop, perché in seguito avrai bisogno di questa scorta. Se si pop la scorta creata in my_branche poi fare git stashin master, che riuscirai a causare inutili conflitti di unione quando più tardi si applicare tale scorta a my_branch.
git resetrimuove in scena tutto ciò che risulta da git stash apply. Ad esempio, i file che sono stati modificati nello stash ma in cui non esistonomaster vengono messi in scena come conflitti "eliminati da noi".
git checkout .e git clean -f -dscarta tutto ciò che non è stato eseguito il commit: tutte le modifiche ai file tracciati e tutti i file e le directory non tracciati. Sono già salvati nella scorta e se lasciati masterpotrebbero causare inutili conflitti di unione quando si torna a my_branch.
L'ultimo git stash popsi baserà sull'originale my_branche quindi non causerà conflitti di unione. Tuttavia, se la tua scorta contiene file non tracciati che hai impegnato a master, git si lamenterà che "Impossibile ripristinare i file non tracciati dalla scorta". Per risolvere questo conflitto, eliminare i file dal vostro albero di lavoro, quindi git stash pop, git add .e git reset.