La maggior parte delle risposte qui richiede una directory di lavoro pulita e più passaggi interattivi (non valido per gli script) o non funziona per tutti i casi, ad esempio fusioni passate che portano già alcune delle modifiche in sospeso nel ramo di destinazione o ciliegie che eseguono il stesso.
Per vedere veramente cosa cambierebbe nel master
ramo se ti fossi unito develop
in esso, proprio ora:
git merge-tree $(git merge-base master develop) master develop
Poiché è un comando idraulico, non indovina cosa intendi, devi essere esplicito. Inoltre non colora l'output né usa il tuo cercapersone, quindi il comando completo sarebbe:
git merge-tree $(git merge-base master develop) master develop | colordiff | less -R
- https://git.seveas.net/previewing-a-merge-result.html
(grazie a David Normington per il link)
PS:
Se si ottengono conflitti di unione, questi verranno visualizzati con i soliti indicatori di conflitto nell'output, ad esempio:
$ git merge-tree $(git merge-base a b ) a b
added in both
our 100644 78981922613b2afb6025042ff6bd878ac1994e85 a
their 100644 61780798228d17af2d34fce4cfbdf35556832472 a
@@ -1 +1,5 @@
+<<<<<<< .our
a
+=======
+b
+>>>>>>> .their
L'utente @dreftymac ha un buon punto: questo lo rende inadatto per gli script, perché non è possibile individuarlo facilmente dal codice di stato. I marker di conflitto possono essere abbastanza diversi a seconda delle circostanze (cancellati vs modificati, ecc.), Il che rende difficile anche il grep. Attenzione.
git merge
egit reset --keep HEAD@{1}
se non mi piace il risultato.