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 ( HEAD
ou seja, ou o SHA completo)