Как мы можем получить разницу между двумя git-репозиториями?
Сценарий: у нас есть repo_a и repo_b. Последний был создан как копия repo_a. После этого в обоих хранилищах произошла параллельная разработка. Есть ли способ, которым мы можем перечислить различия текущих версий этих двух репозиториев?
Ответы:
В repo_a:
источник
origin/master
а не голыеmaster
. Кроме того, это находит разницу между основными ветвями, так что, если вы хотите найти все ветви, которые отличаются? Например, чтобы проверить состояние резервной копии репозитория?Мелд может сравнить каталоги:
Просто используйте каталоги двух репозиториев git, и вы получите хорошее графическое сравнение:
Когда вы нажимаете на один из синих пунктов, вы можете увидеть, что изменилось.
источник
Вы можете сначала добавить другое репо в качестве удаленного к текущему репо:
затем возьмите брач с этого пульта:
это создает эту ветвь как новую ветку в вашем текущем репо, и вы можете сравнить эту ветку с любой из ваших ветвей, например, чтобы сравнить текущую ветку с новой веткой (имя_рукава):
источник
После того как вы обе ветви в одном хранилище вы можете сделать
git diff
. И получить их в одном хранилище так же просто, какисточник
Это неверно
remotes/b
это удаленная, но не ветка.Чтобы заставить это работать, я должен был сделать:
источник
Смотрите http://git.or.cz/gitwiki/GitTips , раздел «Как сравнить два локальных репозитория» в разделе «Общие».
Короче говоря, вы используете переменную среды GIT_ALTERNATE_OBJECT_DIRECTORIES для доступа к базе данных объектов другого репозитория и используете git rev-parse с
--git-dir
/ GIT_DIR для преобразования символического имени в другом репозитории в идентификатор SHA-1.Современная версия будет выглядеть примерно так (при условии, что вы находитесь в 'repo_a'):
где
../repo_b/.git
путь к объектной базе данных в repo_b (это был бы repo_b.git, если бы это был пустой репозиторий). Конечно, вы можете сравнивать произвольные версии, а не только заголовки.Обратите внимание, что если repo_a и repo_b - это один и тот же репозиторий, может оказаться более целесообразным поместить их обоих в один и тот же репозиторий, либо используя «
git remote add -f ...
» для создания псевдонимов для репозитория для повторных обновлений, либо отключив «git fetch ...
»; как описано в других ответах.источник
Я использую PyCharm, который имеет большие возможности для сравнения папок и файлов.
Просто откройте родительскую папку для обоих репозиториев и дождитесь индексации. Затем вы можете использовать правую кнопку мыши на папке или файле
Compare to...
и выбрать соответствующую папку / файл на другой стороне.Он показывает не только какие файлы отличаются, но и их содержимое. Гораздо проще, чем командная строка.
источник
Лучше всего иметь оба репозитория на локальном компьютере и использовать команду linux diff с двумя каталогами в качестве параметров:
diff -r repo-A repo-B
источник
Простой способ сделать это, не касаясь конфигурации вашего пульта. Из репо А в мастер (предположим, вы хотите сравнить основные филиалы):
источник
Вы можете использовать следующую команду:
или для бок о бок вы можете использовать:
В случае раскрашивания каждого файла различий вы можете использовать:
источник
Напоминание самому себе ... сначала загрузите, иначе хранилище не имеет локального хэша (наверное).
Шаг 1. Настройте пульт дистанционного управления и выше ^
Дифференцирование одного файла следует этой схеме:
git diff localBranch uptreamBranch --spacepath / singlefile
git diff master upstream/nameofrepo -- src/index.js
источник