Копирование репо git через "sneake rnet" - PullRequest
0 голосов
/ 21 апреля 2020

Я создал голое репо git на своем VPS (виртуальный частный сервер). Затем я сделал git clone на одной из моих локальных машин, назвал ее local1 , добавил большое количество файлов, зафиксировал их и сделал git push. Итак, я передал эти файлы (всего несколько ГБ) через inte rnet один раз.

Теперь я хочу иметь такое же хранилище на некоторых других локальных машинах, но Я хочу избежать передачи все эти файлы возвращаются через inte rnet снова . Вместо использования git clone, я могу просто скопировать репо с local1 на USB-накопитель, а затем скопировать его на другие машины local2 , local3 , и др c? Или есть лучший способ сделать это?

РЕДАКТИРОВАТЬ: Все рассматриваемые машины подключены к inte rnet. После того, как репозитории настроены, я планирую обычно git push и git pull, потому что я буду изменять только несколько файлов за раз. Это всего лишь начальная передача полного набора файлов, который меня беспокоит.

Ответы [ 2 ]

3 голосов
/ 21 апреля 2020

да, вы можете просто скопировать весь каталог (обязательно скопируйте скрытый каталог .git внутри, содержащий все метаданные git).

В качестве альтернативы вы можете клонировать с одного локального компьютера на другой:

git clone local1-ip:/path/to/repository

и в конце вы можете просто изменить URL-адрес origin , чтобы он указывал на ваш VPS:

git remote set-url origin VPS:url.git
0 голосов
/ 21 апреля 2020

Подход к копированию подкаталога .git отлично работает для создания клона, однако вы достигнете этого (файловый браузер, tar, cp, scp, что угодно). Однако это оставляет одну проблему: Передача обновлений.

Существует два способа эффективной передачи новых коммитов:

  • Если обе машины подключены к inte rnet, Вы можете просто нажать / вытащить из обеих машин для синхронизации.

  • Если у второй машины воздушный зазор, вы все равно можете эффективно получать новые коммиты, используя git bundle:

    git bundle create <path/to/new/file/on/stick.bundle> <old-master>..master упакует все коммиты между <old-master> и master в пакетный файл, который затем можно будет передать через sneaker- net на машину с воздушным зазором. Последующие git bundle unbundle ... или git fetch ... позволяют загружать новые коммиты в репозиторий.

    (Я всегда использую git bundle unbundle ..., потому что у меня были некоторые проблемы с git fetch, работающим не так, как ожидалось. Однако git bundle unbundle не будет обновлять ссылки для вас, вам нужно будет исправить ваши ветки вручную, если вы используете этот вариант. Это действительно команда типа сантехника, как справедливо замечает man-страница.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...