Achei que esta pergunta (do título) pudesse ser sobre o uso do git diff em dois arquivos que não estão necessariamente em um repo. Descobri que o sinalizador --no-index serve para isso, por exemplo git diff --no-index --word-diff old_file.txt new_file.txt(--word-diff destaca as alterações por palavra, não apenas por linha, o que é muito útil para texto longo).
Pat
Respostas:
135
Especifique os caminhos explicitamente:
git diff HEAD:full/path/to/foo full/path/to/bar
Confira a --find-renamesopção nos git-diffdocumentos .
Quero mencionar que você pode comparar quaisquer dois arquivos usando, git diff <path> <path>mesmo que eles não estejam em um repositório git.
mitenka
1
@mitenka Não acho isso correto. Se você observar, git diff --helpverá que os únicos padrões suportados para dois arquivos são git diff [<options>] --no-index [--] <path> <path>. git diff a bcorresponde apenas a padrões de confirmação, não a arquivos.
Doug
@Doug Aqui está a citação do comando help que você mencionou, git-scm.com/docs/git-diff : Mostra as [...] alterações entre dois arquivos no disco.
mitenka
@mitenka a ajuda diz, a menos que você use '--no-index', ele não compara arquivos; seu comentário deve ser uma resposta separada; não é verdade e não é relevante para esta resposta.
Doug
1
@Doug Obrigado pela sua opinião. Aqui está a citação da ajuda que você faz referência: Você pode omitir a --no-indexopção ao executar o comando em uma árvore de trabalho controlada pelo Git e pelo menos um dos pontos de caminho fora da árvore de trabalho, ou ao executar o comando fora de uma árvore de trabalho controlada pelo Git .
mitenka
77
Acredito que usar --no-indexé o que você está procurando:
git diff [<options>]--no-index [--]<path><path>
conforme mencionado no manual do git:
Este formulário é para comparar os dois caminhos fornecidos no sistema de arquivos. Você pode
omitir a --no-indexopção ao executar o comando em uma árvore de trabalho controlada pelo Git e pelo menos um dos caminhos aponta para fora da árvore de trabalho, ou ao executar o comando fora de uma árvore de trabalho controlada pelo Git.
@swe esta é definitivamente uma resposta útil, mas o OP declarou especificamente que o arquivo está no HEAD, o que significa que está em um índice git. A resposta aceita aborda diretamente a questão. Também a resposta aceita teve uma vantagem de 6 anos;)
Michael Delgado
3
Isso pode não ter ajudado o OP, mas era exatamente o que eu estava procurando.
thislooksfun
Isso responde à pergunta postada pelo título, se você estiver procurando por isso na web.
Merlin
3
Se você estiver usando o tortoise git, você pode clicar com o botão direito em um arquivo e obter uma comparação: Clique com o botão direito do mouse no primeiro arquivo e através do submenu tortoisegit selecione "Diff later" Então no segundo arquivo você também pode clicar com o botão direito neste , vá para o submenu tortoisegit e selecione "Diff with yourfilenamehere.txt"
Usando o PhpStorm, eu apenas copio o código do commit anterior e comparo-o com a versão atual usando a ferramenta integrada "comparar com a área de transferência".
git diff --no-index --word-diff old_file.txt new_file.txt
(--word-diff destaca as alterações por palavra, não apenas por linha, o que é muito útil para texto longo).Respostas:
Especifique os caminhos explicitamente:
git diff HEAD:full/path/to/foo full/path/to/bar
Confira a
--find-renames
opção nosgit-diff
documentos .Crédito: twaggs .
fonte
git diff <path> <path>
mesmo que eles não estejam em um repositório git.git diff --help
verá que os únicos padrões suportados para dois arquivos sãogit diff [<options>] --no-index [--] <path> <path>
.git diff a b
corresponde apenas a padrões de confirmação, não a arquivos.--no-index
opção ao executar o comando em uma árvore de trabalho controlada pelo Git e pelo menos um dos pontos de caminho fora da árvore de trabalho, ou ao executar o comando fora de uma árvore de trabalho controlada pelo Git .Acredito que usar
--no-index
é o que você está procurando:conforme mencionado no manual do git:
fonte
Se você estiver usando o tortoise git, você pode clicar com o botão direito em um arquivo e obter uma comparação: Clique com o botão direito do mouse no primeiro arquivo e através do submenu tortoisegit selecione "Diff later" Então no segundo arquivo você também pode clicar com o botão direito neste , vá para o submenu tortoisegit e selecione "Diff with yourfilenamehere.txt"
fonte
Usando o PhpStorm, eu apenas copio o código do commit anterior e comparo-o com a versão atual usando a ferramenta integrada "comparar com a área de transferência".
fonte