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