Respostas:
Você pode fazer:
git diff master~20:pom.xml pom.xml
... para comparar sua atual pom.xmlcom a de master20 revisões atrás, até o primeiro pai. É possível substituir master~20, é claro, pelo nome do objeto (SHA1sum) de uma confirmação ou por qualquer uma das muitas outras maneiras de especificar uma revisão .
Observe que, na verdade, isso está comparando a pom.xmlversão antiga com a versão em sua árvore de trabalho, e não a versão confirmada master. Se você desejar, faça o seguinte:
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
Por exemplo:
git diff b0d14a4 foobar.txt
git diff <revision> root/path/file.
Se você quiser ver a diferença entre a última confirmação de um único arquivo, você pode:
git log -p -1 filename
Isso fornecerá a comparação do arquivo no git, não comparando o arquivo local.
-1passo a passo até obter as alterações.
gitlog () { git log -${3:-p} -${2:-1} $1; } Usado como: gitlog Rakefileou gitlog Rakefile 5e gitlog Rakefile 10 s. O primeiro mostra um diff; o segundo mostra cinco diferenças; o terceiro mostra dez --no-patch.
Para ver o que foi alterado em um arquivo na última confirmação:
git diff HEAD~1 path/to/file.
Você pode alterar o número (~ 1) para o n-ésimo commit com o qual deseja diferenciar.
HEAD~1é substituída <revision>, o que torna essa resposta uma duplicata.
Sintaxe genérica:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
para todos os arquivos denominados "FileName.xml" em qualquer lugar do seu repositório.
Observe o espaço entre "-" e "**"
Responda a sua pergunta:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
como sempre com o git, você pode usar uma tag / sha1 / "HEAD ^" para identificar um commit.
Testado com git 1.9.1 no Ubuntu.
Se nenhum dos commit for o seu HEAD, a expansão de chaves do bash será realmente útil, especialmente se os seus nomes de arquivos forem longos, o exemplo acima:
git diff master~20:pom.xml master:pom.xml
Se tornaria
git diff {master~20,master}:pom.xml
Mais sobre a expansão Brace com bash.
Para comparar com 5 confirmados com o atual, ambos ativados master, basta:
git diff master~5:pom.xml master:pom.xml
Também é possível consultar o número do hash de confirmação, por exemplo, se o número do hash for x110bd64, você pode fazer algo assim para ver a diferença:
git diff x110bd64 pom.xml
origem do git diff -w HEAD / caminho principal / para / arquivo
git diff master~20 -- pom.xml
Funciona se você também não estiver no ramo mestre.
Se você estiver bem usando uma ferramenta gráfica (ou até preferindo), você pode:
gitk pom.xml
No gitk, você pode clicar em qualquer confirmação (para "selecioná-la") e clicar com o botão direito do mouse em qualquer outra confirmação para selecionar "Dif. Isto -> selecionado" ou "Dif. Selecionado -> este" no menu pop-up, dependendo da ordem que você preferir.
Para pessoas interessadas em fazer o mesmo no GitHub, consulte comparar confirmações ao longo do tempo .
Se você precisar diferenciar um único arquivo em um stash, por exemplo, poderá fazer
git diff stash@{0} -- path/to/file
Se você está procurando o diff em um commit específico e deseja usar a interface do usuário do github em vez da linha de comando (digamos que deseja vinculá-lo a outras pessoas), você pode:
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
Por exemplo:
Observe os links Anterior e Próximo no canto superior direito que permitem navegar por todos os arquivos no commit.
Porém, isso funciona apenas para um commit específico, não para comparar entre duas versões arbitrárias.
git diff <revision>:foo/ HEAD:foo/.