Как обновить клон git --mirror?

Я создал репозиторий git для зеркального отображения живого сайта (который представляет собой не-голый репозиторий git):

git clone --mirror ssh://[email protected]/path/to/repo

Теперь, чтобы сохранить этот клоун зеркала обновленным всеми изменениями из его удаленного источника, какую команду или команды я должен использовать?

Я бы хотел, чтобы все обновлялось: коммиты, ссылки, перехваты, ветки и т.д.

Спасибо!

Ответ 1

Это команда, которую нужно выполнить в зеркале:

git remote update

Ответ 2

Что касается коммитов, ссылок, веток и "et cetera", Магнус отвечает просто работает (git remote update).

Но, к сожалению, нет способа clone/зеркало/update крючки, как я хотел...

Я нашел эту очень интересную тему о клонировании/зеркалировании крючков:

http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread

Я научился:

  • Перехватчики не считаются частью содержимого репозитория.

  • Существует больше данных, таких как папка .git/description, которая не клонируется, так же, как и крючки.

  • Крюки по умолчанию, которые появляются в hooks поступают из TEMPLATE_DIR

  • Существует этот интересный template функции на мерзавца.

Таким образом, я могу либо игнорировать это "клонировать предмет крючков", либо пойти на стратегию rsync, учитывая цели моего зеркала (только резервное копирование + источник для других клонов).

Ну... Я просто забуду о клонировании клонов и придерживаюсь способа git remote update.

  • Sehe только что указала, что не только "перехватчики" не управляются процессом clone/update, но также stashes, rerere и т.д. Итак, для строгой резервной копии rsync или эквивалент действительно будет способом. Поскольку это действительно не обязательно в моем случае (я могу позволить себе не иметь крючков, задержек и т.д.), Как я уже сказал, я буду придерживаться remote update.

Спасибо! Улучшилось немного моего собственного "git-fu"... :-)

Ответ 3

Смотрите здесь: Git не клонирует все ветки на последующих клонах?

Если вы действительно этого хотите, потянув ветки вместо push --mirror, вы можете посмотреть здесь:

"fetch -all" в git голом репозитории не синхронизируются локальные ветки с удаленными

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