Смотрите http://git.or.cz/gitwiki/GitTips , раздел «Как сравнить два локальных репозитория» в разделе «Общие».
Короче говоря, вы используете переменную среды GIT_ALTERNATE_OBJECT_DIRECTORIES для доступа к базе данных объектов другого репозитория и используете git rev-parse с--git-dir
/ GIT_DIR для преобразования символического имени в другом репозитории в идентификатор SHA-1.
Современная версия будет выглядеть примерно так (при условии, что вы находитесь в 'repo_a'):
GIT_ALTERNATE_OBJECT_DIRECTORIES = .. / repo_b / .git / objects \
git diff $ (git --git-dir = .. / repo_b / .git rev-parse --verify HEAD) HEAD
где ../repo_b/.git
путь к объектной базе данных в repo_b (это был бы repo_b.git, если бы это был пустой репозиторий). Конечно, вы можете сравнивать произвольные версии, а не только заголовки.
Обратите внимание, что если repo_a и repo_b - это один и тот же репозиторий, может оказаться более целесообразным поместить их обоих в один и тот же репозиторий, либо используя « git remote add -f ...
» для создания псевдонимов для репозитория для повторных обновлений, либо отключив « git fetch ...
»; как описано в других ответах.