No Git, para ver as diferenças com um commit anterior, executo isto:
git diff HEAD~1
Para ver os commits relacionados a um único, file
eu executaria isto:
git log --oneline file
Mas se eu executar o seguinte e o arquivo que quero referenciar não foi alterado nos últimos commits, o Git não mostra nada.
git diff HEAD~1 file
Como posso visualizar o diff de maneira semelhante, HEAD
mas a um arquivo específico, se esse arquivo não foi confirmado na referência apontada por HEAD
?
Responder1
Você terá que referenciar o SHA explicitamente se quiser ver a diferença de um arquivo que não foi alterado entre o último commit e o anterior ( HEAD~1
).
Execute o log para ver alguns dos SHAs que você deseja visualizar
git log --oneline <file>
Um exemplo de saída é o seguinte:
af46919 raspado - em vez disso, liguei para a pizzaria local b09206c adicionou molho e uma garrafa de pimenta à lista ad90f90 sove a massa e deixe durante a noite
Agora, se você quiser ver a comparação das alterações feitas no arquivo, faça referência a ele por meio do segundo SHA que você vê. Neste caso temos isto do exemplo:
git diff b09206c <file>
O acima é uma abreviação para
git diff b09206c HEAD <file>
Ou pense assim:
git diff <start-commit-SHA> <future-commit-SHA> <file>
Para executá-lo como um comando (por exemplo, para script), você pode fazer:
git log --oneline <file> |awk 'NR==2{print $1}'|xargs -I {} git diff {} <file>