Git diff entre la twig et le maître actuels mais sans inclure les commits principaux non fusionnés

Je veux un diff de tous les changements dans une twig qui n’est pas encore fusionnée avec master.

J’ai essayé:

git diff master git diff branch..master git diff branch...master 

Cependant, dans chacun de ces cas, le diff contient du contenu dans master qui n’a pas encore été fusionné dans ma twig.

Existe-t-il un moyen de faire un diff entre ma twig et mon maître qui exclut les modifications de master qui n’ont pas encore été fusionnées dans ma twig?

 git diff `git merge-base master branch`..branch 

Fusionner la base est le point où la branch divergé du master .

Git diff supporte une syntaxe spéciale pour ceci:

 git diff master...branch 

Vous ne devez pas échanger les côtés car vous obtiendrez alors l’autre twig. Vous voulez savoir ce qui a changé dans la branch car il a divergé de master , pas l’inverse.

Librement lié:

  • Trouver un emtwigment avec Git?
  • Comment puis-je voir de quelle twig provient une autre twig?

Notez que la syntaxe .. et ... n’a pas la même sémantique que dans les autres outils Git. Il diffère de la signification spécifiée dans man gitrevisions .

Citant l’ man git-diff :

  • git diff [--options] [--] […]

    Ceci permet d’afficher les changements entre deux arbitraires.

  • git diff [--options] .. [--] […]

    Ceci est synonyme de la forme précédente. Si d’un côté est omis, cela aura le même effet que d’utiliser HEAD place.

  • git diff [--options] ... [--] […]

    Ce formulaire permet d’afficher les modifications sur la twig contenant et jusqu’au deuxième , en commençant par un ancêtre commun des deux . ” git diff A...B ” est équivalent à ” git diff $(git-merge-base AB) B “. Vous pouvez omettre tout élément de , qui a le même effet que HEAD .

Juste au cas où vous feriez quelque chose d’exotique, il convient de noter que tous les dans la description ci-dessus, sauf dans les deux dernières formes qui utilisent les notations “..”, peuvent être n’importe quel .

Pour une liste plus complète des façons d’orthographier , voir la section ” gitrevisions[7] DES RÉVISIONS” dans gitrevisions[7] . Cependant, “diff” consiste à comparer deux points de terminaison, pas des plages, et les notations de plage (” .. ” et ” ... “) ne signifient pas une plage telle que définie dans la section ” gitrevisions[7] ” dans gitrevisions[7] .

Voici ce qui a fonctionné pour moi:

 git diff origin/master... 

Cela montre uniquement les modifications entre ma twig locale actuellement sélectionnée et la twig principale distante, et ignore toutes les modifications de ma twig locale provenant de validations de fusion.