git diff `git merge-base master branch`..branch
A base de mesclagem é o ponto de onde branchdivergiu master.
O diff do Git suporta uma sintaxe especial para isso:
git diff master...branch
Você não deve trocar os lados, porque você obteria o outro ramo. Você quer saber o que mudou branchdesde que divergiu master, e não o contrário.
Relacionado livremente:
Observe que a sintaxe ..e ...não tem a mesma semântica que em outras ferramentas Git. Difere do significado especificado em man gitrevisions.
Citação man git-diff:
git diff [--options] <commit> <commit> [--] [<path>…]
Isso é para visualizar as alterações entre duas arbitrárias <commit>.
git diff [--options] <commit>..<commit> [--] [<path>…]
Isso é sinônimo do formulário anterior. Se <commit>um lado for omitido, terá o mesmo efeito que o uso HEAD.
git diff [--options] <commit>...<commit> [--] [<path>…]
Este formulário é para exibir as alterações no ramo que contém e até o segundo <commit>, iniciando em um ancestral comum de ambos <commit>. " git diff A...B" é equivalente a " git diff $(git-merge-base A B) B". Você pode omitir qualquer um dos <commit>que tem o mesmo efeito que o uso HEAD.
No caso de você estar fazendo algo exótico, observe que tudo <commit>na descrição acima, exceto nas duas últimas formas que usam notações "..", pode ser qualquer um <tree>.
Para obter uma lista mais completa de maneiras de escrever <commit>, consulte a seção "ESPECIFICANDO REVISÕES" em gitrevisions[7]. No entanto, "diff" consiste em comparar dois pontos de extremidade, não intervalos, e as notações de intervalo (" <commit>..<commit>" e " <commit>...<commit>") não significam um intervalo conforme definido na seção "SPECIFYING RANGES" em gitrevisions[7].
git diff master..branch. Você pode reduzi-logit diff master..se estiver no ramo. Ar1..r2sintaxe é curta, o^r1 r2que significa "mostre-me tudo o que descer2e não é alcançávelr1".git help gitrevisionstem informações sobre as várias sintaxes que você pode usar.