Ответ 1
Да, это возможно. IIRC, git использует относительный подход. Поэтому безопасно синхронизировать его с другим компьютером.
Этот вопрос, вероятно, основан на моем недостаточном понимании роли реестров .gits и git в целом, но:
Могу ли я rsync с dir с содержимым, которое я создал с помощью git init
между машинами?
У меня есть репозиторий на моем ноутбуке, и единственный способ убрать его оттуда - это scp/rsync на удаленный хост, из которого я могу загрузить его снова. Могу ли я rsync полную структуру каталогов между этими хостами?
Да, это возможно. IIRC, git использует относительный подход. Поэтому безопасно синхронизировать его с другим компьютером.
Есть несколько возможностей:
Вы можете просто rsync
репозиторий .git
(или даже весь репозиторий вместе с рабочим каталогом), при условии, что вы не имеете никакой активности в репозитории во время rsync
ing (тот же отказ от использования, что и для использования rsync://
).
Вы можете клонировать или извлекать с использованием устаревшего протокола rsync
(где URL/расположение репозитория выглядит следующим образом: "rsync://host.xz/path/to/repo.git/
" ). Обратите внимание, что этот протокол устарел, потому что если в репозитории есть какая-либо деятельность, вы можете получить поврежденный клон (или выборку).
Кроме того, как я уже слышал, он не работал корректно в присутствии упакованных ссылок с 2007 года, и никто не заметил до недавнего времени. Он исчезнет в Git 2.8.
Или вы можете создать git пакет, rsync
it или scp
он на другой машине, а затем клонировать или извлекать из пакета.
Вы можете rsync без проблем, но если у вас есть какие-либо удаленные прокси файлы с именами хостов, которые являются локальными для машины (т.е. хранятся только в /etc/hosts ), то они, очевидно, не будут работать.
Однако есть ли причина, по которой вы не используете git для синхронизации содержимого?
Да, вы можете, но вы должны сделать это с помощью открытого репозитория, как показано в этот поток.
$ git clone --bare ./projet projet.git
$ rsync -a --stats --delete ./projet.git/ votre.serveur:~/projets/projet.git/
Примечание: спустя 6 лет git 2.8 (март 2016) официально обесценит и полностью удалит протокол git rsync!
См. зафиксировать 0d0bac6 (30 января 2016 г.) Джефф Кинг (peff
).
(слияние Junio C Hamano - gitster
- в commit 9f03176, 17 февраля 2016 г.
Оказывается, "
git clone
" по сравнению с rsync транспортом был нарушен, когда исходный репозиторий долгое время имеет упакованные ссылки и никто не заметил и не пожаловался на это.
Commit 0d0bac6 от Джефф Кинг (peff
) содержит все детали.
Да, rsync
возможно использование dir .git
и приведет к полному клону репозитория.
Использование rsync для резервного копирования .git возможно, но с одним уловом (по крайней мере, для меня) Он не может быть обновлен. В следующий раз, когда вы попытаетесь снова запустить rsync, вы получите массивное переименование объекта.. и вы не можете удалить их. Не знакомый с системой rsync или linux, я очищаю резервную копию .git перед тем, как я ее запустил.
Что есть:
> chmod -R 777 /path/of/your/backup/.git
> rm -fr /path/of/your/backup/.git
> rsync /path/of/your/origin/.git /path/of/your/backup/.git
Я знаю, это очень налогообложение и глупо. Пожалуйста, дайте мне знать, есть ли лучший способ сделать это.