Как создать удаленный репозиторий Git из локального?

У меня есть локальный репозиторий Git. Я хотел бы сделать его доступным на удаленном сервере с поддержкой ssh. Как мне это сделать?

6 ответов


Я думаю, вы делаете голый репозиторий на удаленной стороне,git init --bare, добавьте удаленную сторону в качестве push / pull tracker для вашего локального репозитория (git remote add origin URL), а затем локально вы просто сказать git push origin master. Теперь любой другой репозиторий pull из удаленного репозитория.


чтобы изначально настроить любой сервер Git, необходимо экспортировать существующий репозиторий в новый пустой репозиторий - репозиторий, который не содержит рабочего каталога. Это, как правило, просто сделать. Чтобы клонировать репозиторий для создания нового голого репозитория, выполните команду clone с помощью . По соглашению, голые каталоги репозитория заканчиваются на .git, например:

$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/

эта команда берет репозиторий Git сама по себе, без рабочий каталог, и создает каталог специально для него одного.

теперь, когда у вас есть голая копия репозитория, все, что вам нужно сделать, это поставить ее на сервер и настроить протоколы. Предположим, вы создали сервер под названием git.example.com что у вас есть доступ к SSH, и вы хотите сохранить все свои репозитории Git под . Вы можете настроить свой новый репозиторий, скопировав свой голый репозиторий:

$ scp -r my_project.git user@git.example.com:/opt/git

на данный момент, другие пользователи, которые иметь SSH доступ к тому же серверу, который имеет доступ для чтения к /opt/git каталог может клонировать ваш репозиторий, запустив

$ git clone user@git.example.com:/opt/git/my_project.git

если пользователь SSHs в сервер и имеет доступ на запись к .

$ ssh user@git.example.com
$ cd /opt/git/my_project.git
$ git init --bare --shared

очень легко взять репозиторий Git, создать голый версия и поместите ее на сервер, к которому у вас и ваших сотрудников есть доступ SSH. Теперь вы готовы сотрудничать в том же проекте.


примечание для людей, которые создали локальную копию в Windows и хотят создать соответствующий удаленный репозиторий в системе Unix-line, где текстовые файлы получают LF-окончания на дальнейших клонах разработчиками в Unix-подобных системах, но crlf-окончания в Windows.

Если вы создали свой репозиторий Windows до настройка перевода конца строки затем у вас есть проблема. По умолчанию Git не переводит, поэтому ваш рабочий набор использует CRLF, но ваш репозиторий (т. е. данные, хранящиеся под .git) также сохранил файлы как CRLF.

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

чтобы получить LF в удаленном репозитории, вы должны сначала убедиться, что LF находится в локальном репозитории, по ре-нормализации репозитории для Windows. Это не будет иметь видимого влияния на ваш рабочий набор Windows, который по-прежнему имеет окончания CRLF, однако при нажатии на remote пульт получит LF правильно.

Я не уверен, что есть простой способ сказать, какие окончания строк у вас есть в вашем репозитории Windows-я думаю, вы можете проверить его, установив core.autocrlf=false, а затем клонирование (если РЕПО имеет LF-окончания, клон также будет иметь LF).


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

предполагая, что вы уже настроили и использовали git с помощью ssh-ключей, я написал небольшой скрипт Python, который при выполнении из рабочего каталога настроит удаленный и инициализирует каталог как репозиторий git. Конечно, вам придется отредактировать скрипт (только один раз), чтобы сообщить ему сервер и корневой путь для всех хранилища.

проверьте здесь -https://github.com/skbobade/ocgi


удаленный репозиторий-это обычно голый репозиторий - Git-репозиторий у этого нет рабочего каталога. Потому что репозиторий используется только как точка сотрудничества, нет никаких причин для проверки моментального снимка на диске; это просто данные Git. Проще говоря, голый репозиторий-это содержимое вашего проекта .каталог git и больше ничего.

вы можете сделать голый репозиторий git со следующим код:

$ git clone --bare /path/to/project project.git

один из вариантов удаленного репозитория git использует протокол SSH:

общий транспортный протокол для Git, когда self-hosting находится над SSH. Это связано с тем, что SSH-доступ к серверам уже настроен в большинстве а если нет, то это легко сделать. СШ тоже аутентифицированный сетевой протокол и, поскольку он вездесущ, он вообще легкий для того чтобы настроить и использовать.

чтобы клонировать репозиторий Git через SSH, вы можете укажите ssh:// URL-адрес вот так:

$ git clone ssh://[user@]server/project.git

или вы можете использовать более короткий синтаксис scp-like для протокола SSH:

$ git clone [user@]server:project.git

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

Плюсы

плюсы использования SSH много. Во-первых, SSH относительно легко установить демоны up-SSH являются обычным явлением, многие сетевые администраторы имеют опыт с ними, и многие дистрибутивы ОС настроены с ними или нет инструменты для управления ими. Далее, доступ по SSH защищен-все данные передача шифруется и проходит проверку подлинности. Последний, как HTTPS, Git и Локальные протоколы, SSH эффективны, делая данные такими же компактными, как возможно перед переносом.

Минусы

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

для получения дополнительной информации, проверьте ссылку: Git на сервере - протоколы


обычно вы можете настроить репозиторий git, просто используя init команда

git init

в вашем случае, уже есть РЕПО на удаленном доступен. В зависимости от того, как вы получаете доступ к удаленному РЕПО ( с именем пользователя внутри url или ключом ssh, который обрабатывает проверку), используйте только :

git clone git@[my.url.com]:[git-repo-name].git

есть и другие способы клонирования РЕПО. Таким образом, вы вызываете его, если у вас есть настройка ssh-ключа на вашем компьютере, которая проверяет при вытягивании вашего репозитория. Существуют и другие комбинации url-адреса, если вы хотите включить свой пароль и имя пользователя для входа в удаленный репозиторий.