A maioria das respostas aqui exige um diretório de trabalho limpo e várias etapas interativas (ruins para scripts), ou não funciona para todos os casos, por exemplo, mesclagens anteriores que já trazem algumas das alterações pendentes para o seu ramo de destino, ou escolhas mesmo.
Para realmente ver o que mudaria na master
ramificação se você se unisse develop
a ela, agora:
git merge-tree $(git merge-base master develop) master develop
Como é um comando de encanamento, não adivinha o que você quer dizer, você precisa ser explícito. Também não coloriza a saída ou usa seu pager, portanto, o comando completo seria:
git merge-tree $(git merge-base master develop) master develop | colordiff | less -R
- https://git.seveas.net/previewing-a-merge-result.html
(obrigado a David Normington pelo link)
PS:
Se você obter conflitos de mesclagem, eles aparecerão com os marcadores de conflito usuais na saída, por exemplo:
$ 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
O usuário @dreftymac faz uma boa observação: isso não é adequado para scripts, porque você não pode capturar isso facilmente a partir do código de status. Os marcadores de conflito podem ser bem diferentes, dependendo da circunstância (excluídos x modificados etc.), o que também dificulta o grep. Cuidado.
git merge
egit reset --keep HEAD@{1}
se não gostar do resultado.