GIT - Автоматическое развертывание проектов
GIT - распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года.
Эта краткая инструкция по GIT позволит быстро научиться разворачивать и поддерживать на сервере Ваши проекты.
Настройка НА СЕРВЕРЕ
(минимальная инструкция)
Репозиторий в папке: /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://[email protected]/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 [email protected] Date: Thu Jun 13 13:33:44 2019 +0300Commit Wow1commit 7a17ee44ae24a8f8e68320f27fa3fba515cd3491 Author: Andrey Koryagin [email protected] Date: Thu Jun 13 13:31:29 2019 +0300Commit Wowcommit bfe5f3b9efe6faca32b3463fb4a63cd5645c8482 Author: Andrey Koryagin [email protected] Date: Thu Jun 13 13:24:49 2019 +0300Commit Test2commit 7d888f5edc635801e2f3eb111927b9fc74085bf4 Author: Andrey Koryagin [email protected] Date: Thu Jun 13 13:23:27 2019 +0300Commit 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 reset --soft HEAD~
Объединить все коммиты в один
git reset $(git commit-tree HEAD^{tree} -m "commit message")
Далее при выполнении "push" необходимо добавлять опцию "-f":
git push -f
Клонирование
Для того чтобы скачать репозиторий с сервера на локальную машину, в какой нибудь рабочей папке выполняем:
git clone ssh://[email protected]/var/git/site.git
Для удобства можно его обозвать live, как раньше:
git remote add live ssh://[email protected]/var/git/site.git
Можно работать.
Pull
Если на сервере были обновления и Вам нужно их скопировать в локальный репозиторий:
git pull ssh://[email protected]/var/git/site.git
GitWeb
В каталоге /var/git/site.git запускаем:
git instaweb
Возможно перед этим потребуется установить lighttpd. Сервер запуститься на порту 1234. В браузере смотрим http:/127.0.0.1:1234
Для остановки сервера:
git instaweb --stop
Полезное чтиво
Tags
bme280 bmp280 gps mpu-6050 options stm32 ssd1331 ssd1306 eb-500 3d-printer soldering tim mpu-9250 dma watchdog piezo exti web raspberry-pi docker ngnix solar bluetooth foc html css brushless flask dc-dc capture gpio avr rs-232 mpx4115a atmega mongodb st-link barometer pwm nvic git java-script programmator dht11 hih-4000 pmsm encoder max1674 smd sensors rtc adc lcd motor timer meteo examples i2c usb flash sms rfid python esp8266 servo books bldc remap eeprom bkp battery ethernet uart usart displays led websocket nodemcu wifi
Архіви