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


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

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



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

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

cd ~123/


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

git init



Указываем, что внешний репозиторий будет иметь адрес 123.123.123.123 .

Адрес взят для примера, реальный можно посмотреть выполнив ip a на удаленной машине.


Пример:

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


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 "[email protected]"

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 [email protected]:/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 [email protected]:/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 [email protected]:/tmp/.

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



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

Самые популярные из них это Gitlab и Jenkins.



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

Сказать спасибо