Как обновить git clone --mirror?
Я создал git-репозиторий для зеркалирования живого сайта (который не является непокрытым git-репозиторием):
git clone --mirror ssh://user@example.com/path/to/repo
Теперь, чтобы сохранить этот зеркальный клон обновленным со всеми изменениями из его удаленного источника, какую команду или команды я должен использовать?
Я бы хотел, чтобы все обновлялось: коммиты, ссылки, хуки, ветки и т. Д.
Спасибо!
3 ответа
Это команда, которую вам нужно выполнить на зеркале:
git remote update
Что касается коммитов, ссылок, веток итак далее, ответ Магнуса просто работает (удаленное обновление git).
Но, к сожалению, нет способа клонировать / отразить / обновить хуки, как я и хотел...
Я нашел эту очень интересную тему о клонировании / зеркалировании крючков:
http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread
Я научился:
"Хуки" не считаются частью содержимого хранилища.
Существует больше данных, таких как папка ".git / description", которая не клонируется, так же как и хуки.
Хуки по умолчанию, которые появляются в директории "hooks", взяты из TEMPLATE_DIR
На git есть эта интересная функция "шаблона".
Итак, я могу либо проигнорировать эту "вещь клонирования крючков", либо пойти на rsync
стратегия, учитывая цели моего зеркала (резервное копирование + источник для других клонов, только).
Хорошо... Я просто забуду о клонировании хуков и придерживаюсь способа "git remote update".
- Сехе только что отметил, что не только "хуки" не управляются процессом клонирования / обновления, но также хранятся, перезаписываются и т. Д. Итак, для строгой резервной копии, rsync или эквивалентный вариант действительно был бы подходящим вариантом. Поскольку в моем случае это не является действительно необходимым (я могу позволить себе не иметь хуков, тайников и т. Д.), Как я уже сказал, я буду придерживаться "удаленного обновления".
Спасибо! Немного улучшил мою собственную "гитфу"...:-)
Смотрите здесь: Git не клонирует все ветви на последующих клонах?
Если вы действительно хотите это, потянув ветви вместо push --mirror
Вы можете посмотреть здесь:
"fetch --all" в репозитории git bare не синхронизирует локальные ветви с удаленными
Этот ответ содержит подробные инструкции о том, как добиться этого относительно легко: