Приватный репозиторий git

Приватный репозиторий git представляет собой часть файловой системы, являющуюся хранилищем данных и репозиторием инициализированным при помощи git init. В отличие от github, где можно размещать только репозитории с публичным доступом приватный репозиторий можно организовать на собственном сервере в специально выделенном для этих целей каталоге.

 

 

Приватный репозиторий git

Настройки необходимо производить как в локальном репозитории из которого будут отправляться данные, так и на удаленной машине. В примере — на облачном сервере в корневом каталоге /tmp

 

На локальном сервере:

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

cd ~123/

 

Инициализируем репозиторий

git init

 

Указываем, что внешний репозиторий будет иметь адрес 123.123.123.123 (этот адрес можно посмотреть выполнив ip a на удаленной машине)

git remote add origin 123.123.123.123

 

Создадим тестовый файл с произвольным содержимым

mcedit 1.txt

Hello

 

Добавляем файл в индекс

git add 1.txt

 

Просмотрев статус можно вывести список всех измененных файлов, готовых для commit-а

git status

# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use «git rm —cached <file>…» to unstage)
#
# new file: 1.txt

 

 

Представляемся указывая имя и адрес электронной почты

git config —global user.email «admin@example.com»

git config —global user.name «server admin»

 

 

Коммитим изменения добавляя в качестве комментария слово first

git commit -m 'first'

[master (root-commit) 5d81a6d] first
1 files changed, 7 insertions(+)
create mode 100755 1.txt

 

Пробуем отправить данные в удаленный репозиторий

git push origin master

fatal: '123.123.123.123' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

 

 

На удаленном сервере:

cd /tmp

git init

 

На локальном сервере:

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

 

git remote set-url origin 123.123.123.123:/tmp

 

Повторяем попытку отправить данные

git push origin master

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

 

Такая ошибка может возникнуть если на локальной машине мы работаем не от имени root, исправить можно так:

git remote set-url origin root@91.201.54.235:/tmp

 

git push origin master

Сейчас запрашивается SSH пароль root на удаленном сервере, это означает, что подключиться получилось.

 

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

! [remote rejected] master -> master (branch is currently checked out)

 

 

На удаленном сервере:

Чтобы данные передавались нужно переключиться из дефолтной ветки master на удаленной машине

git checkout -b newbrunch

 

 

На локальном сервере:

git push origin master

Counting objects: 3, done.
Delta compression using up to 16 threads.
Compressing objects: 100% (1/1), done.
Writing objects: 100% (3/3), 913 bytes | 0 bytes/s, done.
Total 8 (delta 0), reused 0 (delta 0)
To root@123.123.123.123:/tmp
* [new branch] master -> master

 

Передача данных удалась

 

 

На удаленном сервере:

Сейчас если просмотреть содержимое каталога, который используется как репозиторий только что переданного файла 1.txt в нем не будет

ls -al

total 24
drwxrwxrwt 6 root root 4096 Дек 21 18:00 .
drwxr-xr-x 23 root root 4096 Янв 11 2016 ..
drwxr-xr-x 8 root root 4096 Дек 21 18:04 .git

 

Причина в том, что мы находимся в ветке newbrunch, изменеиня же были отправлены в master

Переключаемся на ветку master

 

git checkout master

Switched to branch 'master'

 

Сейчас в выводе ls будет тестовый файл, что означает, что он добавлен в репозиторий успешно. При необходимости его можно скачать с машины выполнив git pull root@123.123.123.123:/tmp/. При этом потребуется ввести пароль root пользователя на сервере. Эта защищенность означает, что фактически создан приватный репозиторий git

 

Репозиторий можно использовать как по прямому назначению — для упрощения процесса разработки, так и для деплоя приложений