Как я могу сделать свой локальный репозиторий доступным для git-pull?
у меня есть репозиторий рабочей копии, с которым я работал без проблем; источник для этого репозитория находится на GitHub.
Я хотел бы сделать мой репозиторий рабочей копии доступным в качестве источника для моей машины сборки (виртуальной машины на другом физическом хосте), так что коммиты, которые я делаю для своей рабочей копии, могут быть построены и протестированы на машине сборки без необходимости сначала проходить через GitHub. У меня уже есть сборка для репозитория GitHub, но я хотел бы, чтобы это было " золотым" репозиторий / сборка; т. е., если что-то идет туда, сборка против GitHub должна быть гарантирована.
Я посмотрел документацию по URL-адресам Git и увидел, что есть возможность использовать URL-адрес в форме git://host.xz[:port]/path/to/repo.git/ (см., например, git-clone documentation). Я хочу сделать это самым простым способом, с минимальной конфигурацией: я не хочу настраивать демон SSH или веб-сервер только для публикации этого на моей машине сборки.
Я запускаю Windows 7 x64 RC, у меня установлены MSysGit и TortoiseGit, и я открыл ПОРТ По умолчанию Git (9814) на брандмауэре. Пожалуйста, предположим, что рабочая копия РЕПО находится в D:Visual Studio ProjectsMyGitRepo и имя devbox. Машина сборки-Windows Server 2008 x64. Я пробовал следующую команду на машине сборки с соответствующим выводом:
D:Integration>git clone "git://devbox/D:Visual Studio ProjectsMyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)
Я что-то пропустила?
6 ответов:
существует пять возможностей для настройки репозитория для pull from:
- локальная файловая система:
git clone /path/to/repoилиgit clone file://path/to/repo. Минимум работы, если у вас есть сетевая файловая система, но не очень эффективное использование сети. (это почти точно решение, предложенное Йоаким Элофссона)- протоколы HTTP:
git clone http://example.com/repo. Вам нужно любой веб-сервер, и Вам также нужно запустить (возможно, автоматически, с крючка)git-update-server-info для генерации информации, необходимой для извлечения/вытягивания через "немые" протоколы.- SSH:
git clone ssh://example.com/srv/git/repoилиgit clone example.com:/srv/git/repo. Вам нужно настроить SSH-сервер (SSH-демон) и установить SSH на клиенте (например, PuTTY на MS Windows).- git-протокол:
git clone git://example.com/repo. Вам нужно бежать git-daemon на сервере; см. документацию для деталей (вы можете запустить его как автономный процесс только для выборка, не обязательно Запуск от имени службы). git-демон является частью git.- bundle: вы создаете пакет на сервере с помощью git-bundle команда, перенесите ее на клиентскую машину любым способом (даже через USB) и клонируйте с помощью
git clone file.bndl(если клон не работает, вы можете сделать "инит-мерзавец", "в Git дистанционного добавить" и "ГИТ выборки").то, что вам не хватает в вашем примере, вероятно, работает Git-daemon на сервере. Это, или неправильная настройка ГИТ-демон.
к сожалению, я не могу помочь вам с запуском git-daemon в качестве службы на MS Windows. Однако в объявлении для последней версии msysGit нет ничего о том, что Git-daemon не работает.
в дополнение к ответам Якуба Нарембского есть еще один способ, более соответствующий вашему первоначальному вопросу. Вы можете клонировать из github, как обычно, а затем, когда вы хотите выполнить одноразовое вытягивание из своего локального РЕПО, просто сделайте это:
git pull /path/to/repo master(вместо master можно поставить любое имя ветки.)
маршрут ssh работает хорошо, но требует удаленного сервера ssh. Если у вас есть платформа Windows, то Cygwin предоставляет рабочий ssh-сервер, который работает с Git, но вручную обновляет Git при использовании Cygwin Git (я написал некоторые подсказки на http://alecthegeek.wordpress.com/2009/01/21/top-tip-upgrade-git-on-cygwin/).
недавно я изменил один из моих проектов git, чтобы реплицировать себя на HTTP-сервер с помощью sitecopy для фактической загрузки файлов.
Это довольно легко, просто использовать
git update-server-infoзатем зеркало .каталог git для некоторого каталога http-доступа на вашем сервере. Я использовал ' проект.ГИТ', который довольно распространен.Git pull from http://site/project-git работает как чемпион, и мне не нужно ничего иметь на сервере, кроме FTP-доступа, хотя sitecopy поддерживает и webdav тоже.
Я не рекомендую использовать sitecopy, не держать несколько машин в синхронизации. Для моего проекта репозиторий HTTP доступен только для чтения, а обновления gold поступают только с одной машины, поэтому он работает достаточно хорошо.
если у вас есть путь как
C:\Project\и ты
git initуже, так что у вас тоже есть папкаC:\Project\.git\теперь вы делаете новую папку
C:\.git\заходим в эту папку и запустите
git clone --bare ..\Project(голой важно),
возвращайся к своему
Если ваш удаленный хост находится в той же сети windows, то есть вы можете получить к нему доступ как \remotehost, затем вы можете сопоставить сетевой диск в проводнике, скажем z: --> \remotehost\repodir, после этого вы можете использовать 'git clone /z/myproject' для клонирования проекта
Comments