Использование Git в Битрикс-проектах имеет свою специфику: нельзя хранить весь /bitrix/ в репозитории, ядро обновляется через собственный механизм, а деплой часто вручную через FTP. В этой статье — практичный Git flow с конкретными командами для типичного Битрикс-проекта.
Что включать в .gitignore
Ядро Битрикс не должно быть в репозитории — оно обновляется через обновлятор и весит сотни мегабайт.
# .gitignore для Битрикс /bitrix/ !/bitrix/php_interface/ !/bitrix/templates/ /upload/ /local/modules/bitrix.*/ *.log *.bak /bitrix/cache/ /bitrix/managed_cache/ /bitrix/stack_cache/
В репозитории храним только: /local/, /bitrix/templates/, /bitrix/php_interface/, свои компоненты, шаблоны и конфигурационные файлы.
Структура веток
main — стабильный production develop — ветка разработки (staging) feature/* — отдельные задачи hotfix/* — срочные правки прямо в production
Типичный рабочий процесс
# Начало новой задачи git checkout develop git pull origin develop git checkout -b feature/add-delivery-service # Разработка... git add local/components/my.delivery/ git commit -m "feat: добавить кастомную службу доставки DHL" # Готово — мержим в develop git checkout develop git merge feature/add-delivery-service --no-ff git push origin develop # После тестирования — в main git checkout main git merge develop --no-ff git tag -a v1.2.3 -m "Release 1.2.3" git push origin main --tags
Деплой на сервер через Git
Самый простой способ деплоя — bare-репозиторий с post-receive хуком на сервере.
1. Создаём bare-репозиторий на сервере
mkdir -p /home/git/myproject.git cd /home/git/myproject.git git init --bare
2. Настраиваем post-receive хук
cat > /home/git/myproject.git/hooks/post-receive << 'EOF' #!/bin/bash GIT_WORK_TREE=/home/bitrix/www git checkout -f main cd /home/bitrix/www php -f local/tools/post_deploy.php echo "Deploy completed" EOF chmod +x /home/git/myproject.git/hooks/post-receive
3. Добавляем remote на рабочем компьютере
git remote add production ssh://user@your-server.ru/home/git/myproject.git git push production main
Скрипт post_deploy.php
После каждого деплоя полезно автоматически очистить кеш:
CleanAll();
echo date("Y-m-d H:i:s") . " — Deploy OK, cache cleared\n";
Hotfix: срочная правка в production
git checkout main git checkout -b hotfix/fix-payment-callback # правим... git commit -m "fix: исправить обработку callback от ЮKassa" git checkout main git merge hotfix/fix-payment-callback --no-ff git push production main # синхронизируем с develop git checkout develop git merge hotfix/fix-payment-callback --no-ff
Работа с двумя серверами (staging + production)
git remote add staging ssh://user@staging.ru/home/git/project.git git remote add production ssh://user@prod.ru/home/git/project.git # Пуш на staging из develop git push staging develop:main # Пуш на production из main git push production main
Итог
Git flow для Битрикс не сложнее стандартного: главное с самого начала правильно настроить .gitignore и вынести кастомный код в /local/. Деплой через bare-репозиторий с хуком избавляет от FTP и ручной заливки файлов.
