Compare a versão atual de um arquivo com a revisão antiga do git

Eu escrevi este pequeno script outro dia quando precisei reverter algumas alterações que fiz em um commit anterior, mas não queria reverter o arquivo inteiro. Eu também tive algumas mudanças locais no arquivo, então o que eu realmente precisava era uma maneira de ver a versão atual do arquivo ao lado da versão no commit antigo. Minha ferramenta de escolha para comparação de arquivos é TextWrangler , mas você pode preferir FileMerge ou Kaleidoscope . Aqui está um script de shell “rápido e sujo” para fazer exatamente isso:

#!/bin/bash
FILENAME
=$(basename "$2")
EXT
="${FILENAME##*.}"
TMPFILE
=$(mktemp -t tmp).$EXT
git show $1
:$2 > $TMPFILE
twdiff
--wait $2 $TMPFILE # replace this with the diff tool of your choice
rm
-f $TMPFILE

você o invoca chamando diff_old_to_new.sh <tree-ish> <filename>, onde tree-ish é qualquer referência de commit que o git entende ( HEADou seja, ou o SHA completo)