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 Wow1
commit 7a17ee44ae24a8f8e68320f27fa3fba515cd3491 Author: Andrey Koryagin [email protected] Date: Thu Jun 13 13:31:29 2019 +0300Commit Wow
commit bfe5f3b9efe6faca32b3463fb4a63cd5645c8482 Author: Andrey Koryagin [email protected] Date: Thu Jun 13 13:24:49 2019 +0300Commit Test2
commit 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
Полезное чтиво
Недавні записи
- LCD Display ST7567S (IIC)
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
Tags
battery soldering java-script ngnix adc rs-232 flask esp8266 watchdog web exti solar mongodb rtc sms pwm usart books ethernet smd git websocket meteo css python dc-dc displays led ssd1306 eeprom gpio barometer max1674 mpx4115a brushless motor mpu-6050 timer sensors remap servo bldc atmega pmsm 3d-printer flash encoder examples dma raspberry-pi tim ssd1331 piezo mpu-9250 rfid eb-500 foc bme280 gps nvic dht11 bluetooth hih-4000 stm32 st-link docker uart avr html wifi bmp280 bkp nodemcu options usb lcd programmator i2c capture
Архіви