Вход / Регистрация 0
г. Красноярск
Дубровинского 110, оф. 503

Настройка git на серверах хостинга timeweb-а

Сначала необходимо создать RSA-ключи для обмена, так как гит не умеет обмениваться паролями.
Эта операция делается один раз, далее можно заводить сколько угодно репозиториев и пользоваться одним ключом для всех.

Открываем документацию таймвеб (http://timeweb.com/ru/community/articles/kak-nastroit-ssh-klyuchi-i-kodovuyu-frazu-dlya-servera-1) и делаем всё как там написано, четвёртый шаг выполнять необязательно.
После этого выполните команду

git config receive.denyCurrentBranch ignore

Следующий шаг - открываем статью по настройке гит: (https://github.com/eveness/git-and-timeweb) и пошагово выполяем все действия из этой статьи.

На всякий случай:

Так как на тарифах виртуального хостинга Timeweb нет возможности добавить иной SSH-доступ, кроме основного, то работа в пределах такого тарифа возможна только под одним юзером.
Для начала необходимо включить SSH-доступ, для чего требуется привязка телефона с подтверждением SMS-кодом.
Заходим на сервер, где <user> соответственно логин, а <server> хост, который можно узнать в панели управления:
ssh <user>@<server>.timeweb.ru
Заходим в папку проекта, для примера my-site, и инициализируем там репозиторий:
cd my-site
git init
Добавляем в конфиг свою почту и имя пользователя (если до этого не было):
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
Посмотреть настройки можно командой:
git config --list
Добавляем какой-нибудь файл, например .gitignore, коммитим:
git add .
git commit -m "init"
Создаем в корне папку git и переходим в нее:
cd ~
mkdir git
cd git
Тут инициализируем bare-репозиторий:
git clone --bare ../my-site my-site.git
Возвращаемся в папку проекта и добавляем туда:
cd ~/my-site
git remote add shared ../git/my-site.git
Добавляем хук post-update в bare-репозиторий:
cd ~/git/my-site.git/hooks
С содержимым:
#!/bin/sh
cd /home/u/user/my-site || exit
unset GIT_DIR
git pull shared master
exec git-update-server-info
Где /u/user/ - это первая буква логина и сам логин. Даем права на запуск:
chmod +x post-update
Добавляем хук post-commit в репозиторий проекта:
cd ~/my-site/.git/hooks
С содержимым:
#!/bin/sh
git push shared
Даем права на запуск:
chmod +x post-commit
Возвращаемся в папку проекта:
cd ~/my-site
И пушимся:
git push --set-upstream shared master
Локально добавлеям удаленный репозиторий и обновляемся:
git remote add origin ssh://<user>@<server>.timeweb.ru/home/<u>/<user>/git/my-site.git
git pull origin master
Примечание:
в случае работы с IDE JetBrains PhpStorm/WebStorm достаточно:
а) в стартовом окне выбрать Checkout from Version Control -> Git
б) в произвольном открытом проекте в верхнем меню выбрать VCS -> Checkout from Version Control -> Git
и в поле Git Repository URL ввести:
ssh://<user>@<server>.timeweb.ru/home/<u>/<user>/git/my-site.git
После запуска проекта пулить сразу уже не требуется.
Работаем как и с обычным репозиторием. Конец, успех.
Единственное что:
команду

git remote add origin ssh://<user>@<server>.timeweb.ru/home/<u>/<user>/git/my-site.git

выполнить не получилось, вместо неё надо выполнить

git clone ssh://<user>@<server>.timeweb.ru/home/<u>/<user>/git/my-site.git
Не забудьте указать локально конфиг:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
Со своими данными.

Если хуки правим/создаём в редакторе под windows - то формат конца строки должен быть LF
В notepad++: Правка-Формат конца строк-Преобразовать в UNIX формат (LF) (Edit -> EOL Conversion -> Unix (LF))