Ответ 1
Почему бы не просто cat each repo git войти в свой собственный файл и сравнить? Разница, ближайшая к нижней части файла, там, где они начали расходиться...
У меня есть два разных экспорта нашего репозитория CVS в git. В какой-то момент они расходятся, и я изучаю почему. Линия развития продолжается несколько лет и превышает десятки тысяч коммитов.
В начале строки разработки идентификаторы SHA1 для каждой фиксации идентичны, сообщая мне, что git -cvsimport очень согласуется с тем, что он делает, когда читает результаты cvsps и импорта.
Но когда-то между первым фиксатором и вчера, идентификаторы SHA1 начинают расходиться. Я хотел бы узнать, где это, сравнивая список идентификаторов фиксации из каждого репозитория и глядя на то, что отсутствует. Есть ли хорошие инструменты или методы для этого?
Почему бы не просто cat each repo git войти в свой собственный файл и сравнить? Разница, ближайшая к нижней части файла, там, где они начали расходиться...
Так как два репозитория git начинаются одинаково, вы можете вытащить их в один и тот же рабочий репозиторий.
$ git remote add cvsimport-a git://.../cvsimport-a.git
$ git remote add cvsimport-b git://.../cvsimport-b.git
$ git remote update
$ git log cvsimport-a/master..cvsimport-b/master # in B, not in A?
$ git log cvsimport-b/master..cvsimport-a/master # in A, not in B?
В одном из ваших репозиций сделайте следующее:
$ git remote add other-repo git://.../other-repo.git
$ git remote update
$ git log other-repo/master...master
# or maybe:
$ gitk master... other-repo/master
Это дает вам симметричную разницу между двумя репозиториями; это показывает вам все коммиты, которые находятся в одном репо, но не в другом.
Очевидным способом было бы клонировать один репозиторий, забрать кончик основной ветки другого репозитория в клон и использовать git базу слияния на двух подсказках, чтобы найти общего предка.
Вы можете помещать (извлекать) оба репозитория в один репозиторий, новый или один из существующих, как в ответах ephemient, Charles Bailey и Брайан Кэмпбелл. Или вы можете использовать трюк из Советы и рекомендации на Git Wiki, или, точнее, вопрос "Как сравнить два локальных репозитория" есть.
Но проще было бы сгенерировать список SHA-1 коммитов в топологическом порядке, используя "git rev-list" (или "git -log" с соответствующими параметрами) и проверить,.
У меня была аналогичная потребность в последнее время. У меня был клонированный удаленный проект, который мне нужно сравнить с текущей скопированной базой кода. Журналы git не были релевантны, потому что коммиты не имели ничего общего, и я не был уверен, что они разветвлены с той же базой кода.
Чтобы решить проблему, я использовал git в грубом силе. Я скопировал файлы, которые нужно проверить в репозитории git, а затем проверил git status
для списка с измененными файлами.
Кроме того, git diff <filename>
также может использоваться для дальнейшего осмотра. Мне удалось сравнить файлы в