Как вытащить репозиторий git на ubuntu без подключения к интернету?

Я хочу использовать Git в локальной сети в нашей компании, потому что у меня нет доступа к Интернету на моем компьютере. У моего друга есть подключение к Интернету и машина ubuntu, он отправил некоторые исходные коды в Git, и мне нужно вытащить их без подключения к Интернету, и я также использую Ubuntu 14.04. Дополнительно я создал репозиторий с помощью команды:

git init --bare

РЕДАКТИРОВАТЬ: Обе машины - ubuntu, извините за недоразумение.


person sosa    schedule 02.10.2014    source источник
comment
возможный дубликат git-эквивалента 'hg serve'?   -  person Jean-Karim Bockstael    schedule 02.10.2014
comment
Возможно актуально: stackoverflow.com/q/11792671 с использованием git-bundle для копирования репо. справочная страница для git-bundle и stackoverflow.com/a/3639182 показывает, как синхронизировать позже, если это необходимо.   -  person Hasturkun    schedule 02.10.2014
comment
@Hasturkun можно ли использовать git bundle без использования sneakernet   -  person sosa    schedule 14.10.2014
comment
@sosa: Основная его цель - разрешить офлайн-переводы. Вы могли бы, например, создайте пакет, поместите его в доступное место (например, загрузите пакет извне на флэш-накопитель) и импортируйте его. Вам нужен какой-то способ доставить пакет до места назначения. Если обе машины подключены к одной сети, вы можете использовать git clone поверх ssh или rsync и пропустить все это.   -  person Hasturkun    schedule 14.10.2014


Ответы (4)


Попросите друга создать общий ресурс Windows для репозитория git.

Убедитесь, что вы установили

apt-get install cifs-utils

создать каталог монтирования

$ mkdir ~/my_friends_repo

смонтировать удаленный общий ресурс с помощью

$ sudo mount -t cifs -o username=USERNAME,password=PASSWORD \
      //your_friends_ip_or_computer_name/NAME_OF_SHARE ~/my_friends_repo

Теперь вы можете либо клонировать его

git clone ~/my_friends_repo my_friends_repo_clone

или добавьте его в существующее репо в качестве другого удаленного репозитория и вытащите его изменения

git remote add my_friends_repo ~/my_friends_repo
git pull my_friends_repo master
person René Link    schedule 02.10.2014
comment
Я также добавил еще один ответ, который может быть более простым: stackoverflow.com/a/26159184/974186 - person René Link; 02.10.2014

В дополнение к моему предыдущему ответу ...

Ваш друг может использовать git daemon на своем компьютере с Windows для экспорта репозитория

На машине с Windows сделайте это в git bash

git daemon --export-all --reuseaddr --verbose --enable=receive-pack --base-path=PATH_TO_THE_REPOSITORY

На вашем компьютере с Ubuntu вы можете клонировать репо

git clone git://your_friends_ip_or_computer_name REPO_CLONE_NAME

или добавьте его в существующее репо в качестве другого удаленного репозитория и вытащите его изменения

git remote add my_friends_repo  git://your_friends_ip_or_computer_name
git pull my_friends_repo master


touch git-daemon-export-ok
person René Link    schedule 02.10.2014

Основы

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

Если ваш друг отправил свой контент в какой-либо ящик в Интернете (например, на github), и вы не можете получить доступ к этому местоположению с вашего хоста, это поле не поможет в вашем случае.

У вас есть несколько вариантов:

  • Вытащите прямо из репозитория ваших друзей («ящик», который он использовал для отправки на github.)
  • Попросите его напрямую отправить свой репозиторий на ваш хост.
  • Создайте репозиторий где-нибудь в вашей сети. (В этом случае он может нажать в этот репозиторий, а вы потом можете извлечь из него.)

Решение с использованием промежуточного репозитория

Поскольку вы используете ubuntu, который уже поставляется с ssh, возможно, самым простым решением является настройка нового пользователя на вашем компьютере и создание там чистого репозитория. Тогда у вас есть место, откуда вы можете получить информацию, и ваш друг может использовать этого пользователя для отправки в этот репозиторий.

Сделать это можно так:

sudo useradd -m gituser                     # create user
sudo -iu gituser git init --bare reponame   # create repository
sudo passwd gituser                         # set password for user

После этого ваш друг может нажать на него, используя git push gituser@yourhost/reponame. И вы можете получить отправленный контент с помощью git clone gituser@yourhost/reponame.

Решение с использованием git-daemon

Другой способ - использовать git-daemon на ваши друзья хостят для обслуживания своего хранилища. В этом случае вы можете тянуть прямо с его хоста. На окнах типа:

git daemon --base-path=PATH --export-all

где «ПУТЬ» - это локальный каталог, содержащий репозиторий. В ubuntu вы можете получить доступ к этому репозиторию, используя

git clone git://friendshost/reponame

где «friendshost» - это имя хоста вашего друга, а «reponame» - это имя каталога, содержащего репозиторий. Например, если репозиторий находится в «C: \ some \ dir \ repo», тогда «C: \ some \ dir» - это ПУТЬ, а «repo» - это репозиторий.)

person michas    schedule 02.10.2014

Это зависит от того, где у вашего друга находится репозиторий git.

Вы можете указать расположение удаленных источников в файле .gitconfig. См. Эту ссылку для получения дополнительных сведений.

person aairey    schedule 02.10.2014