En complément des réponses existantes, un alias pourrait être créé pour afficher le diff et/ou le log avant une fusion. De nombreuses réponses omettent le fetch
avant de "prévisualiser" la fusion ; il s'agit d'un alias qui combine ces deux étapes en une seule (émulant quelque chose de similaire à la fonction de mercurial hg incoming
/ outgoing
)
Ainsi, en s'appuyant sur " git log ..otherbranch
"vous pouvez ajouter les éléments suivants à ~/.gitconfig
:
...
[alias]
# fetch and show what would be merged (use option "-p" to see patch)
incoming = "!git remote update -p; git log ..@{u}"
Pour des raisons de symétrie, l'alias suivant peut être utilisé pour montrer ce qui est commis et serait poussé, avant de le pousser :
# what would be pushed (currently committed)
outgoing = log @{u}..
Et ensuite vous pouvez exécuter " git incoming
"pour montrer un grand nombre de changements, ou " git incoming -p
"pour afficher le patch (c'est-à-dire le "diff"), " git incoming --pretty=oneline
"pour un résumé laconique, etc. Vous pouvez ensuite (facultativement) exécuter " git pull
"pour fusionner réellement. (Bien que, puisque vous avez déjà récupéré, la fusion pourrait être faite directement).
De même, " git outgoing
"montre ce qui serait poussé si vous exécutez " git push
".
22 votes
J'ai juste
git merge
ygit reset --keep HEAD@{1}
si je n'aime pas le résultat.3 votes
Notez que voir la liste des commits avec leur diff ne raconte pas nécessairement toute l'histoire - si la fusion est non triviale, et surtout s'il y a des conflits, le résultat réel de la fusion peut être un peu intéressant.
0 votes
Le problème est d'essayer de voir facilement quels sont les changements réels qui ont été apportés.
2 votes
C'est exactement ce que fait votre méthode originale. Le point de mon commentaire est que, bien que l'examen des différences individuelles est très bien, si vous avez une fusion complexe, vous pouvez vous retrouver avec des résultats surprenants, même si tous les commits fusionnés sont indépendamment bons.
2 votes
@Jan : Pour certaines raisons,
git reset --keep HEAD@{1}
a retournéfatal: Cannot do a keep reset in the middle of a merge.
De l'aide ?0 votes
@Siku-Siku.Com : La commande suppose que la fusion est terminée et que le résultat a été commité. Je crois que le message sur les conflits vous indique à la fois comment terminer et comment abandonner la fusion.
1 votes
Duplicata possible de Existe-t-il une option git-merge --dry-run ?
8 votes
Pourquoi n'y a-t-il pas un
--preview
dans git-merge ?0 votes
Je pense que la réponse la plus correcte que j'ai vue à ce sujet est ici : stackoverflow.com/a/6283843/1695680