Сделайте локальную копию удаленного репозитория git - PullRequest
24 голосов
/ 20 августа 2011

Я не очень знаком с терминологией или практикой и процедурами контроля версий.

Вот что я хочу сделать:

  1. Я хочу скачать папку из репозитория git из Интернета. Является ли клонирование правильным способом сделать это? Разве клонирование не хранит ненужные файлы метаданных? Есть ли способ сделать «чистую» загрузку?

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

  3. Наконец, я хочу, чтобы это локальное хранилище было доступно в локальной сети, чтобы я мог также загрузить его с любого другого компьютера в локальной сети.

Ответы [ 4 ]

19 голосов
/ 20 августа 2011
  1. Клонирование - верный путь, но он загрузит все каталоги вашего удаленного репозитория Git.
    См. git clone Git Reference .
  2. Команда clone создаст репо с уже извлеченным рабочим деревом и .git, представляющим ваше полное репо
  3. Вам необходимо иметь хотя бы общий путь, чтобы другие могли клонировать / вытягивать / продвигать ваше репо.
    См. локальный протокол git .

Если вы не знакомы с этими операциями, я бы порекомендовал вам следовать простым упражнениям, предложенным git immersion .

3 голосов
/ 21 августа 2011

Хотя git clone подходит для шагов 1 и 2, вам может потребоваться прочитать несколько книг git, например, Progit / Community book и т. Д., Чтобы получить правильное представление о наилучшем подходе к шагу 3,и философия мерзавца.

Git, как распределенная VCS, изо всех сил пытается избежать «единого центрального хранилища», которое может предложить ваш «локальный репозиторий, доступный в локальной сети».У вас может быть чистое репо в сети, которое позволяет многим выталкивать / извлекать из него, но это не то же самое, что локальное репо в сети с рабочим каталогом и только вы используете его как локальный диск.

3 голосов
/ 20 августа 2011

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

Если вас беспокоит размер репозитория git, вы можете git gc заставить git реорганизовать базу данных объектов, что иногда может привести к улучшению размера.

Если вы хотите иметь локальный кеш, вы можете использовать git clone --mirror $REMOTE_URL для создания клона, который

Вы можете клонировать новые рабочие репозитории из этого локального репозитория кэша и либо непосредственно вставить их в репозиторий восходящего направления (вам нужно git remote add upstream $REMOTE_URL в вашей рабочей копии, чтобы добавить ссылку в репозиторий обратного потока, после этого вы можете git push upstream) или вы можете вставить в локальный репозиторий кэша и оттуда перейти в репозиторий восходящего направления.

1 голос
/ 20 августа 2011

Да, «мерзавец клон» - это путь. Это даст вам все данные и позволит вам совершать коммиты. Пока новый репо виден в локальной сети, другие компьютеры также могут клонировать из него.

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