Acabo de descubrir que si sus cambios no comprometidos se agregan al índice (es decir, "en etapas", usando git add ...
), entonces git stash apply
(y, presumiblemente, git stash pop
) realmente se fusionará correctamente. Si no hay conflictos, eres de oro. De lo contrario, resuélvalos como de costumbre git mergetool
o manualmente con un editor.
Para ser claros, este es el proceso del que estoy hablando:
mkdir test-repo && cd test-repo && git init
echo test > test.txt
git add test.txt && git commit -m "Initial version"
# here's the interesting part:
# make a local change and stash it:
echo test2 > test.txt
git stash
# make a different local change:
echo test3 > test.txt
# try to apply the previous changes:
git stash apply
# git complains "Cannot apply to a dirty working tree, please stage your changes"
# add "test3" changes to the index, then re-try the stash:
git add test.txt
git stash apply
# git says: "Auto-merging test.txt"
# git says: "CONFLICT (content): Merge conflict in test.txt"
... que es probablemente lo que estás buscando.
tl; dr
Corre git add
primero.