сайт для палких паяльників

(минимальная инструкция)

Настройка НА СЕРВЕРЕ

Репозиторий в папке: /var/git/site.git
Рабочая папка (сайта): /var/www/test

 cd /var
mkdir git && cd git
mkdir site.git && cd site.git
git init --bare

В папке /var/git/site.git/hooks
создаем файл с именем post-receive он будет копировать файлы из репозитория в рабочую папку сайта

Содержимое файла:

#!/bin/sh
git --work-tree=/var/www/test --git-dir=/var/git/site.git checkout -f

В –work-tree указываем папку, куда закидывать файлы.
–git-dir – папка репозитория

Разрешаем запускать файл:

 chmod +x post-receive

Примечание: Проверяем чтобы в папке logs на файлы были права на запись для пользователя (пользователей) который (которые) будут работать с репозиторием.

Локальная машина

Рабочая папка: /my/workspace
Сервер: 192.168.1.100
Пользователь: andre
Имя удаленного репозитория: live
Примечание: Порт SSH должен быть открыт.

cd /my/workspace
mkdir project && cd project
git init
git remote add live ssh://andre@192.168.1.100/var/git/site.git

Создаем, правим файлы в папке /my/workspace/project

Отправка файлов с локальной машины

git add .
git commit -m "Commit 1"
git push live master

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

Откат назад и корректировка

При необходимости откатиться на один или несколько коммитов назад делай так. На сервере:

cd /var/git/site.git
git log

Видим что-то типа:

commit 23bbca65dd98b1db9e19571ba779a3af9b21281f (HEAD -> master)
 Author: Andrey Koryagin andre@email.com.ua
 Date:   Thu Jun 13 13:33:44 2019 +0300
 Commit Wow1
 commit 7a17ee44ae24a8f8e68320f27fa3fba515cd3491
 Author: Andrey Koryagin andre@email.com.ua
 Date:   Thu Jun 13 13:31:29 2019 +0300
 Commit Wow
 commit bfe5f3b9efe6faca32b3463fb4a63cd5645c8482
 Author: Andrey Koryagin andre@email.com.ua
 Date:   Thu Jun 13 13:24:49 2019 +0300
 Commit Test2
 commit 7d888f5edc635801e2f3eb111927b9fc74085bf4
 Author: Andrey Koryagin andre@email.com.ua
 Date:   Thu Jun 13 13:23:27 2019 +0300
 Commit Test1

Смотрим имена комитов и находим нужный, например, предыдущий 7a17ee44ae24a8f8e68320f27fa3fba515cd3491

Откатываем на нужный нам каммит:

git --work-tree=/var/www/test --git-dir=/var/git/site.git checkout 7a17ee44ae24a8f8e68320f27fa3fba515cd3491

Далее спокойно НА ЛОКАЛЬНОЙ МАШИНЕ правим файлы и спокойно заливаем как делали это раньше. В результате на сервере в репозитории появятся обновления, а в папке сервера НЕТ! Потому как HEAD смотрит на коммит, который мы указали при откате.

В этом можно убедиться посмотрев результат команды:

git log --all

–all нужен чтобы посмотреть все коммиты, без него будет видны только коммиты до того на который сейчас смотрит HEAD.

Теперь на сервере нужно вернуть репозиторий в нормальное состояние командой:

git --work-tree=/var/www/test --git-dir=/var/git/site.git checkout master

После чего в рабочей папке появится крайнее обновление. А HEAD будет указывать куда надо. Работаем дальше и не косячим.

Клонирование

Для того чтобы скачать репозиторий с сервера на локальную машину, в какой нибудь рабочей папке выполняем:

git clone ssh://andre@192.168.1.100/var/git/site.git

Для удобства можно его обозвать live, как раньше:

git remote add live ssh://andre@192.168.1.100/var/git/site.git

Можно работать.

Pull

Если на сервере были обновления и Вам нужно их скопировать в локальный репозиторий:

git pull ssh://andre@192.168.1.100/var/git/site.git

GitWeb

В каталоге /var/git/site.git запускаем:

git instaweb

Возможно перед этим потребуется установить lighttpd. Сервер запуститься на порту 1234. В браузере смотрим http:/127.0.0.1:1234

Для остановки сервера:

git instaweb --stop

Полезное чтиво

Translate
Архіви

© 2011-2019 Андрій Корягін, Кременчук - Київ, Україна