Je veux un diff de tous les changements dans une branche qui n'est pas encore fusionné pour être maîtrisé.
J'ai essayé:
git diff master
git diff branch..master
git diff branch...master
Cependant, dans chacun de ces cas, le diff contient un contenu dans le maître qui n'a pas encore été fusionné dans ma branche.
Existe-t-il un moyen de faire un diff entre ma branche et mon maître en excluant les modifications dans le maître qui n'ont pas encore été fusionnées?
_git diff `git merge-base master branch`..branch
_
base de fusion est le point où branch
a divergé de 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 l'autre branche. Vous voulez savoir ce qui a changé dans branch
puisqu'il a divergé de master
, et non l'inverse.
Relativement lié:
Notez que la syntaxe _..
_ et _...
_ ne possède 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 man git-diff
:
_
git diff [--options] <commit> <commit> [--] [<path>…]
_Ceci permet d'afficher les modifications entre deux _
<commit>
_ arbitraires __._
git diff [--options] <commit>..<commit> [--] [<path>…]
_Cela est synonyme de la forme précédente. Si _
<commit>
_ d'un côté est omis, cela aura le même effet que d'utiliserHEAD
à la place._
git diff [--options] <commit>...<commit> [--] [<path>…]
_Ce formulaire permet d’afficher les modifications apportées à la branche contenant et jusqu’à la deuxième _
<commit>
_, en partant d’un ancêtre commun aux deux _<commit>
_. "_git diff A...B
_" équivaut à "git diff $(git-merge-base A B) B
". Vous pouvez omettre n'importe lequel de _<commit>
_, ce qui revient au même que d'utiliserHEAD
à la place.Juste au cas où vous feriez quelque chose d'exotique, il convient de noter que tous les _
<commit>
_ de la description ci-dessus, à l'exception des deux derniers formulaires qui utilisent des notations "..", peuvent être n'importe quel _<tree>
_ .Pour une liste plus complète des manières d'épeler _
<commit>
_, voir la section "SPÉCIFICATION DE RÉVISIONS" dansgitrevisions[7]
. Toutefois, "diff" consiste à comparer deux extrémités, et non des plages, et les notations de plage ("_<commit>..<commit>
_" et "_<commit>...<commit>
_") ne signifient pas une plage telle que définie dans la section "SPECIFYING RANGES" degitrevisions[7]
.
Voici ce qui a fonctionné pour moi:
git diff Origin/master...
Cela montre uniquement les modifications entre la branche locale actuellement sélectionnée et la branche principale distante, et ignore toutes les modifications dans la branche locale provenant des validations de fusion.