Организация работы через Git
Последние записи
Как добавить файлы сайта в проект на gitlab через phpstorm
- 1. Активируем
gitна проекте черезVCS -> Enable Version Control Intergration - 2. Добавляем привязку к проекту на
gitlabчерезVCS -> Git -> Remotes. Нажимаем на+и добавляем ссылку на проект в форматеhttps://gitlab.com/USERNAME/PROGECTNAME.git - 3. После добавления ссылки авторизуемся на гитлаб, если еще не авторизованы
- 4. Добавляем файл
.gitignoreи комментируем ненужные файлы и папки, например так:
/bitrix/
/!doc/
/test/
/upload/
/vendor/
/.idea/
Ctrl + AVCS -> Get from Version ControlКак логически организовать работу с сайтом через Git
- 1. Создаем основную ветку
masterи ветку для тестированияdev. - 2. При возникновении новой задачи, из актуализированной ветки
masterсоздается ветка под задачу - 3. Задача выполняется и сливается с веткой
dev, решаются все конфликты и проверяется работоспособность (локально) - 4. Ветка
devзаливается на дев сервер, проверяется работоспособность - 5. Если всё хорошо, ветка задачи сливается с актуализированной веткой
master, решаются все конфликты и проверяется работоспособность (локально) - 6. Ветка
masterзаливается на прод сервер
В командах консоли это выглядит примерно так:
1. git checkout master
2. git pull
3. git checkout -b task-branch
*выполняется задача*
4. git checkout dev
5. git pull
6. git merge task-branch
*решаются конфликты*
7. git push
*проверяется работоспособность на dev'е*
8. git checkout master
9. git pull
10. git merge task-branch
*решаются конфликты*
11. git push
Автоматическая заливка файлов на сервер после коммита с помощью .gitlab-ci.yml
Размещаете файл в корне проекта. Константы заменяете на свои и определяете их в настройках проекта, пути прописываете, а в самом файле размещаете код:
deploy:
before_script:
- apt-get update -y
- apt-get install -y rsync sshpass
#Передаем пароль из переменной окружения
- export SSHPASS=$SSH_PROJECT_PSWD
script:
#синхронизация (push rsync)
- rsync --recursive --links --owner --group --times --verbose --no-perms --chmod=D0755,F0644 --rsh="sshpass -e ssh -o StrictHostKeyChecking=no" --exclude '.git' --exclude '.gitlab-ci.yml' -avz ./ $SSH_PROJECT_USER@$SSH_PROJECT_SERVER:/ПОЛНЫЙ_РУТ_ПУТЬ_К_ФАЙЛАМ_ВАШЕГО_ПРОЕКТА_НА_СЕРВЕРЕ/
only:
- master
Данный код будет заливать файлы и папки под root владельцем. Если нужно задать кастомного владельца, то последнюю строку следует видоизменить на:
- rsync --recursive --links --times --verbose --chmod=D0755,F0644 --chown=bitrix:bitrix --rsh="sshpass -e ssh -o StrictHostKeyChecking=no" --exclude '.git' --exclude '.gitlab-ci.yml' -avz ./ $SSH_PROJECT_USER@$SSH_PROJECT_SERVER:/ПОЛНЫЙ_РУТ_ПУТЬ_К_ФАЙЛАМ_ВАШЕГО_ПРОЕКТА_НА_СЕРВЕРЕ/
Если вы используете нестандартный порт, ко команду следует модифицировать добавив ssh -p PORT_NUMBER, например так:
- rsync --recursive --links --times --verbose --chmod=D0755,F0644 --chown=bitrix:bitrix --rsh="sshpass -e ssh -p 7777 -o StrictHostKeyChecking=no" --exclude '.git' --exclude '.gitlab-ci.yml' -avz ./ $SSH_PROJECT_USER@$SSH_PROJECT_SERVER:/ПОЛНЫЙ_РУТ_ПУТЬ_К_ФАЙЛАМ_ВАШЕГО_ПРОЕКТА_НА_СЕРВЕРЕ/
Для установки rsync на сервер воспользуйтесь командой:
yum install rsync
Данный код не является панацеей и подходит лишь для небольшого проекта, поскольку не удаляет файлы, не позволяет заливать на сервер отдельные коммиты, после каждого коммита делает полную заливку файлов на сервер
Если у Вас есть решение лучше, то прошу поделиться им.
Загрузка локального репозитория в проект gitlab через консоль
Инициализируем git
git init
git add
git commit -m "Первый коммит"
Связываем локальный репозиторий с репозиторием gitlab
git remote add origin https://gitlab.com/USERNAME/PROGECTNAME.git
Заливаем файлы в gitlab
git push origin master
Комментарии