Использование GIT для клонирования с компьютера под управлением Windows на веб-сервер Linux (в доме)

#linux #git

#linux #git

Вопрос:

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

Я инициализировал репозиторий (на компьютере с Windows 7) и добавил все файлы в репозиторий на моем локальном компьютере. Теперь мне нужно отправить репозиторий на веб-сервер (компьютер на базе Linux). Я могу получить доступ к веб-серверу через putty и ssh. Как мне клонировать репозиторий в соответствующий каталог для обслуживания веб-сайта?

Я попробовал следующее с моего компьютера на базе Linux: git clone git ssh://myuser@10.1.0.135/d/webserver/htdocs/repo

Я продолжаю получать сообщение о подключении к хосту 10.1.0.35 порт 22: время ожидания соединения истекло

Обе машины находятся внутри сети, а веб-сервер находится вне сети в другом диапазоне IP (за пределами брандмауэра). Я пришел из subversion и могу легко передавать / обновлять svn на веб-сервер и с моего компьютера без проблем.

Спасибо за любые рекомендации по этому поводу!

Комментарии:

1. Хорошая идея. Просто хотел упомянуть, что вы также можете посмотреть «Rsync Windows» — например, Google выдает несколько хороших результатов. Rsync также является очень хорошим инструментом для этого — и он специально создан для такого рода проблем. Проверьте настройки брандмауэра на обеих машинах — соответствующие порты должны быть открыты. В вашем случае порт 22, вероятно, заблокирован

Ответ №1:

Лучший ресурс, который я нашел для этого, находится здесь .

Проблема, с которой я столкнулся, заключалась в том, что при выпуске git-клона из среды * nix с использованием приведенных выше предложений не удалось правильно найти путь к репозиторию.

Я смог исправить это, запустив демон git с параметрами —base-path и —export-all .

Итак, из окна Windows:

 git daemon --base-path=C:/source/ --export-all
  

Затем из окна * nix (в моем случае mac):

 git clone git://<local ip>/<project name>
  

Моя структура каталогов в окне Windows:

 c:source<project name> - this is where the .git folder lives
  

Комментарии:

1. @astroanu и skyking, я обновил ссылку, вы можете удалить свои комментарии, спасибо.

Ответ №2:

Вот пошаговое руководство, которое сделал кто-то другой. Шаг за шагом показано, как делать то, что вы хотите.

Комментарии:

1. Мне это нравится. Это проще, чем пытаться добавить ssh-сервер на компьютер с Windows 7.

2. Это тот, прямо здесь. Абсолютно блестяще! Спасибо за ссылку, она проста в исполнении и очень проста. Спасибо!

3. Я не понимаю, как эта ссылка отвечает на Windows / Linux часть вопроса (хотя это может быть полезно для OP).

Ответ №3:

IP-адрес 10.1.0.135 зарезервирован для частных сетей, что означает, что он относится только к вашему локальному компьютеру с Windows, когда используется в вашей домашней сети. Если вы запускаете git clone команду с этим адресом на своем сервере, 10.1.0.135 ссылается на совершенно другой компьютер, что объясняет, почему соединение не работает.

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

 server$ git init /path/to/repository
  

а затем перенесите изменения со своего компьютера в репозиторий сервера

 home$ git remote add website ssh://myuser@server/path/to/repository
home$ git push website
  

Вы можете назвать удаленный что-то другое, чем «веб-сайт», если хотите.

Для более продвинутого использования я написал сообщение в блоге, объясняющее, как настроить промежуточные и производственные серверы и поддерживать их с помощью git. Однако, если вы не хотите иметь дело с промежуточным сервером, я также ссылаюсь на пару руководств по простой настройке двух репозиториев для управления веб-сайтом с помощью git, что, по сути, звучит так, как будто вы ищете.

Ответ №4:

Похоже, что ваш компьютер с Windows 7 (в частности, порт 22) может быть недоступен за пределами брандмауэра. С subversion веб-сервер, вероятно, доступен для обеих машин. Кроме того, IP-адрес вашего компьютера с Windows является немаршрутируемым IP-адресом, что означает, что ваш брандмауэр, вероятно, также использует вашу внутреннюю сеть.

Вы могли бы подойти к этому, открыв порт 22 в брандмауэре или настроив переадресацию портов в брандмауэре, чтобы указать на ваш компьютер с Windows. Но вам, вероятно, следует создать репозиторий git на сервере, а затем клонировать его на свой компьютер с Windows. Вы могли бы использовать scp -r для получения этого начального репозитория на сервере, хотя кто-то с большим опытом работы с git может подсказать вам лучший способ.

Ответ №5:

Хорошая идея сделать это с помощью Git, если вам все равно нужно проверить его в системе контроля версий.

Просто хотел упомянуть, что вы также можете посмотреть на rsync утилиту — например, Google «Rsync Windows» выдает несколько хороших результатов.

Rsync специально создан для синхронизации деревьев каталогов между компьютерами. И он делает это разумно, не передавая файлы, которые уже находятся на другой стороне, и вы можете использовать сжатие.. он обладает множеством функций и обычно используется в производственных средах UNIX. Есть способы запустить его и в Windows.

В любом случае:

Проверьте настройки брандмауэра на обеих машинах — соответствующие порты должны быть открыты. В вашем случае порт 22, вероятно, заблокирован