Как обновить 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 не синхронизирует локальные ветви с удаленными

Этот ответ содержит подробные инструкции о том, как добиться этого относительно легко:

Другие вопросы по тегам