Eu quero um diff de todas as alterações em um ramo que ainda não foi mesclado para mestre.
Eu tentei:
git diff master
git diff branch..master
git diff branch...master
No entanto, em cada um desses casos, o diff contém conteúdo no master que ainda não foi incorporado ao meu ramo.
Existe uma maneira de fazer uma diferença entre minha ramificação e mestre que exclua alterações no mestre que ainda não foram mescladas em minha ramificação?
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....
sintaxe degit diff
. Seu comentário está errado, @jszakmeister, porque os intervalos de revisão descritos emgitrevisions
nada têm a vergit diff
. Diff compara dois pontos na história, não pode trabalhar com um intervalo.git diff
funciona de maneira diferente dos outros comandos ... um fato que acho frustrante. :-(Respostas:
A base de mesclagem é o ponto de onde
branch
divergiumaster
.O diff do Git suporta uma sintaxe especial para isso:
Você não deve trocar os lados, porque você obteria o outro ramo. Você quer saber o que mudou
branch
desde que divergiumaster
, 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 emman gitrevisions
.Citação
man git-diff
:fonte
$ git diff master...branch
produzidofatal: ambiguous argument 'master...branch': unknown revision or path not in the working tree.
- este é um comando dependente da versão?branch
. Eu escolhi ficar com o nome que o OP havia escolhido na pergunta. Se você deseja usar a ramificação atual, substituabranch
porHEAD
.git diff master...
para evitar especificar a ramificação (a atual será obtida).devel
, @ChrisGuest? Provavelmente, o Git criou a filial para você durante o checkout, como uma cópia local de uma filial remota (normalmenteorigin/devel
). Se fosse esse o caso,git diff origin/devel...bugfix/API-353-api-allows-database-access-when
teria funcionado mesmo antes do checkout.Aqui está o que funcionou para mim:
Isso mostra apenas as alterações entre minha ramificação local selecionada no momento e a ramificação mestre remota e ignora todas as alterações na ramificação local que vieram de confirmações de mesclagem.
fonte
git cherry origin/master
.master
pode ter rebocado um conjunto de confirmações de baixo de você.Como também observado por John Szakmeister e VasiliNovikov, o comando mais curto para obter o diff completo da perspectiva do mestre em seu ramo é:
Isso usa sua cópia local do mestre.
Para comparar um arquivo específico, use:
Exemplo de saída:
fonte