git diff não mostra o suficiente

Eu quero ver a diferença entre o branch master e meu branch de resources. Eu tenho muitos pulls do mestre para o meu ramo de resources e quero ver as alterações que seriam adicionadas se eu mesclass o meu recurso para o mestre.

Esta é minha situação:

-*--*--*-----* \ \ \ 1--*--*--*--2--* 

Meu problema é que o git diff master feature do git diff master feature parece exibir apenas o commit número 2. Eu quero ver o diff que uma requisição github pull mostraria, que eu acredito que é todo o caminho para commitar 1. Eu notei que o git cherry me mostra os commits que eu quero ver a diferença para.

Obrigado por qualquer conselho.

O importante a se perceber sobre o git diff AB é que ele só mostra a diferença entre os estados da tree entre exatamente dois pontos no gráfico de commit – ele não se importa com o histórico. As notações .. e ... usadas para git diff possuem os seguintes significados:

Uma ilustração das diferentes maneiras de especificar commits para git diff

Então, quando você executa o git diff master feature que não está apenas mostrando a mudança introduzida pelo commit que você marcou como 2 – a saída deve mostrar as diferenças exatas entre o estado da tree commited no master e o estado da tree commitada no feature . Se não estiver mostrando as alterações anteriores em sua ramificação de recurso, talvez você tenha resolvido conflitos das mesclagens anteriores do mestre em favor da versão em master ?

Como diz o cebewee , pode ser que o que você queira seja o git log -p master..feature , já que o git log se importa com a história. O significado de .. e ... para o git log é diferente, pois eles selecionam um intervalo de commits:

Uma ilustração das diferentes maneiras de especificar intervalos de commits para o git log

Aliás, é comum dizer que a fusão do master em um ramo de tópico é a coisa errada a fazer – em vez disso, você deve estar rebaixando ou mesclando seu ramo de tópico no master depois que ele estiver completo. Isso mantém o significado do ramo de assunto facilmente compreendido. O mantenedor do git fez um post (um pouco difícil de entender) sobre a filosofia de fusão que discute isso.

git diff master feature não mostra nenhum dos commits, mas a diferença textual entre o mestre e o recurso commits. Parece que você quer ver todos os commits do recurso, que ainda não estão no master? Neste caso, tente git log master..feature ou git log -p master..feature , se você quiser ver os diffs também.

Veja a seção ESPECIFICANDO LINHAS em man git-rev-parse para uma explicação da syntax ‘a..b’.

Eu sou relativamente novo no git, mas se eu entendi sua pergunta corretamente. Sua pergunta está baseada em não entender corretamente os repositorys remotos e locais e como eles se relacionam uns com os outros. Eu lembro que uma vez eu entendi, tudo ficou mais fácil 2x.

Você acha que está nessa situação abaixo, onde tem apenas 2 filiais:

  • featureBranch
  • masterBranch

No entanto, se você fizer um git branch -a você poderá ver todos os seus branches, local e remotamente .

Então sua situação real é:

  • featureBranch
  • masterBranch
  • remoteBranch (s)
  *---*  which is behind your local \ -*--*--*-----* which is ahead of your remote/origin \ \ \ 1--*--*--*--2--* 

Para que você consiga ver o diff similar ao que você vê no Github Pull Request você deve diff lo com o seu branch remoto .

 git diff  / 

Veja comparar a ramificação git local com a ramificação remota?