git diff `git merge-base master branch`..branch
A base de mesclagem é o ponto de onde branch
divergiu 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 branch
desde 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..r2
sintaxe é curta, o^r1 r2
que significa "mostre-me tudo o que descer2
e não é alcançávelr1
".git help gitrevisions
tem informações sobre as várias sintaxes que você pode usar.