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
Полезное чтиво
Недавні записи
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
- U-FOC - Векторне керування безколекторними моторами
- FOC - своя реалізація векторного керування. Підбиваю підсумки 2022 року
- Конструктор регуляторів моторів. Підбиваю підсумки 2022 року.
- Чому трифазні мотори стали такими популярними?
- FOC & Polar coordinates
Tags
bldc atmega uart flash usart smd bkp lcd exti pmsm python timer 3d-printer avr java-script nodemcu bme280 displays hih-4000 stm32 barometer eeprom servo sms piezo options brushless web foc raspberry-pi mongodb mpu-6050 docker programmator ssd1331 solar soldering rtc eb-500 gpio max1674 html flask esp8266 tim ngnix wifi css gps watchdog encoder adc meteo i2c sensors capture battery dht11 mpx4115a motor bmp280 dma books ethernet led examples rs-232 bluetooth st-link remap nvic websocket ssd1306 usb pwm rfid git mpu-9250 dc-dc
Архіви