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

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

Ответ 1

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

Ответ 2

Чтобы изначально настроить любой сервер Git, вам нужно экспортировать существующий репозиторий в новый открытый репозиторий - репозиторий, который не содержит рабочий каталог. Это, как правило, просто. Чтобы клонировать ваш репозиторий для создания нового открытого репозитория, вы запускаете команду clone с опцией --bare. По соглашению, открытые каталоги репозитория заканчиваются на .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 в каталоге /opt/git. Вы можете настроить новый репозиторий, скопировав свой голый репозиторий:

$ scp -r my_project.git [email protected]:/opt/git

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

$ git clone [email protected]:/opt/git/my_project.git

Если пользователь SSH на сервере и имеет право на запись в каталог /opt/git/my_project.git, он также автоматически получит push-доступ. Git автоматически добавит права на запись группы в репозиторий правильно, если вы запустите команду Git init с опцией --shared.

$ ssh [email protected]
$ cd /opt/git/my_project.git
$ git init --bare --shared

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

Отметьте здесь - https://github.com/skbobade/ocgi

Ответ 5

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

git init

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

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

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