Consulte http://git.or.cz/gitwiki/GitTips , seção "Como comparar dois repositórios locais" em "Geral".
Em resumo, você está usando a variável de ambiente GIT_ALTERNATE_OBJECT_DIRECTORIES para ter acesso ao banco de dados de objetos do outro repositório e usando git rev-parse com --git-dir
/ GIT_DIR para converter o nome simbólico em outro repositório no identificador SHA-1.
A versão moderna ficaria assim (supondo que você esteja em 'repo_a'):
GIT_ALTERNATE_OBJECT_DIRECTORIES = .. / repo_b / .git / objects \
git diff $ (git --git-dir = .. / repo_b / .git rev-parse --verify HEAD)
onde ../repo_b/.git
está o caminho para o banco de dados de objetos no repo_b (seria repo_b.git se fosse um repositório vazio). Claro que você pode comparar versões arbitrárias, não apenas HEADs.
Observe que, se repo_a e repo_b forem o mesmo repositório, pode fazer mais sentido colocar os dois no mesmo repositório, usando " git remote add -f ...
" para criar apelidos para o repositório para atualizações repetidas ou obedeça " git fetch ...
"; conforme descrito em outras respostas.