На нашем сервере у нас есть производственный репозиторий git с некоторыми собственными рабочими потоками вокруг него, которые, как правило, содержат важные коммиты только в некотором reflog. Для целей резервного копирования мы хотим синхронизировать весь репозиторий со вторым хранилищем.Синхронизация всех объектов двух репозиториев git
Один из способов был бы простым git push --all
. К сожалению, это будет только толкать объекты, на которые ссылается какой-то известный ref, игнорируя те, которые упоминаются только некоторыми reflog. Есть ли способ сообщить git push
, чтобы натолкнуть рефлоги (и соответствующие коммиты!) Тоже? (В настоящее время я могу только подумать о том, чтобы вручную создать слияние фальшивого осьминогов со всеми записями reflog.)
Другим способом может быть резервное копирование на уровне файловой системы, например rsync
. Это, вероятно, будет работать, но репозитории довольно большие, и git может переупаковать свои коммиты. Поэтому это может занять много времени.
Есть ли способ перечисления всех объектов в обоих хранилищах, их сравнения и передачи только отсутствующих объектов? Есть ли какая-то встроенная функция для такого рода задач? Какой был бы лучший способ сделать это вручную, иначе?
http://stackoverflow.com/questions/14370929/how-do-i-keep-two-git-repositories-in-sync – eRIZ
Нет, этот полностью не связан. – michas
Полное репо содержится в папке '.git'. Если вы скопируете это в другое место, вы будете эффективно копировать все, включая reflog, которые являются лишь некоторыми текстовыми файлами в '.git/logs'. –