Como posso diferenciar um arquivo, digamos pom.xml
, do ramo mestre para uma versão mais antiga e arbitrária no Git?
324
Você pode fazer:
git diff master~20:pom.xml pom.xml
... para comparar sua atual pom.xml
com a de master
20 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.xml
versã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>:foo/ HEAD:foo/
.Por exemplo:
fonte
git diff <revision> root/path/file
.Se você quiser ver a diferença entre a última confirmação de um único arquivo, você pode:
Isso fornecerá a comparação do arquivo no git, não comparando o arquivo local.
fonte
-1
passo a passo até obter as alterações.gitlog () { git log -${3:-p} -${2:-1} $1; }
Usado como:gitlog Rakefile
ougitlog Rakefile 5
egitlog 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:
Você pode alterar o número (~ 1) para o n-ésimo commit com o qual deseja diferenciar.
fonte
HEAD~1
é substituída<revision>
, o que torna essa resposta uma duplicata.Sintaxe genérica:
para todos os arquivos denominados "FileName.xml" em qualquer lugar do seu repositório.
Observe o espaço entre "-" e "**"
Responda a sua pergunta:
como sempre com o git, você pode usar uma tag / sha1 / "HEAD ^" para identificar um commit.
Testado com git 1.9.1 no Ubuntu.
fonte
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:
Se tornaria
Mais sobre a expansão Brace com bash.
fonte
Para comparar com 5 confirmados com o atual, ambos ativados
master
, basta: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:fonte
origem do git diff -w HEAD / caminho principal / para / arquivo
fonte
Funciona se você também não estiver no ramo mestre.
fonte
Se você estiver bem usando uma ferramenta gráfica (ou até preferindo), você pode:
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.
fonte
Para pessoas interessadas em fazer o mesmo no GitHub, consulte comparar confirmações ao longo do tempo .
fonte
Se você precisar diferenciar um único arquivo em um stash, por exemplo, poderá fazer
fonte
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:
Por exemplo:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
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.
fonte