Почему Git-воркфлоу важен
Git — стандарт контроля версий, но без правильного воркфлоу команда быстро погрязнет в конфликтах и хаосе. Хороший Git-воркфлоу обеспечивает предсказуемость, качество кода и быструю доставку.
Стратегии ветвления
Git Flow
Классическая модель для проектов с релизными циклами:
# Основные ветки
main # Продакшен код
develop # Интеграционная ветка
# Вспомогательные ветки
feature/* # Новые функции
release/* # Подготовка релиза
hotfix/* # Срочные исправления
# Создание feature ветки
git checkout develop
git checkout -b feature/user-authentication
# После завершения работы
git checkout develop
git merge --no-ff feature/user-authentication
git branch -d feature/user-authentication
GitHub Flow
Упрощённая модель для непрерывной доставки:
# Только main + feature ветки
main # Всегда готов к деплою
feature/task-123 # Короткоживущие ветки
# Рабочий процесс
git checkout main
git pull origin main
git checkout -b feature/add-search
# Работа над задачей...
git add .
git commit -m "feat: add search functionality"
git push origin feature/add-search
# Создать Pull Request → Code Review → Merge → Deploy
Trunk-Based Development
Для опытных команд с хорошим покрытием тестами:
# Все работают в main с короткими ветками (< 1 дня)
git checkout main
git checkout -b quick-fix
# Маленькие, частые коммиты
git commit -m "fix: correct validation message"
git push origin quick-fix
# Быстрый merge в main
Правила коммитов (Conventional Commits)
# Формат: type(scope): description
feat(auth): add OAuth2 login
fix(api): handle null response
docs(readme): update installation guide
style(css): format button styles
refactor(user): extract validation logic
test(auth): add login unit tests
chore(deps): update dependencies
# Примеры с телом и footer
git commit -m "feat(blog): add comment system
- Add Comment model
- Create comment API endpoints
- Add comment form component
Closes #123"
Pull Request и Code Review
Code review — ключевой процесс для качества кода:
# Шаблон Pull Request
## Описание
Краткое описание изменений
## Тип изменений
- [ ] Новая функция
- [ ] Исправление бага
- [ ] Рефакторинг
- [ ] Документация
## Чек-лист
- [ ] Код соответствует стайлгайду
- [ ] Добавлены/обновлены тесты
- [ ] Документация обновлена
- [ ] Нет console.log и TODO
## Скриншоты (если UI)
До | После
---|---
## Как тестировать
1. Шаг 1
2. Шаг 2
Правила хорошего code review
- Будьте конструктивны — предлагайте решения, не только критикуйте
- Автоматизируйте рутину — линтеры, форматтеры, тесты
- Маленькие PR — легче ревьюить, быстрее мержить
- Отвечайте быстро — не блокируйте коллег
CI/CD автоматизация
Автоматизация проверок и деплоя с GitHub Actions:
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run linter
run: npm run lint
- name: Run tests
run: npm test -- --coverage
- name: Build
run: npm run build
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to production
run: |
echo "Deploying to production..."
# deployment commands
Полезные Git команды
# Интерактивный rebase для чистой истории
git rebase -i HEAD~3
# Stash изменений
git stash
git stash pop
git stash list
# Поиск коммита с багом
git bisect start
git bisect bad HEAD
git bisect good v1.0.0
# Отмена последнего коммита (сохраняя изменения)
git reset --soft HEAD~1
# Просмотр истории с графом
git log --oneline --graph --all
# Cherry-pick коммита
git cherry-pick abc123
Заключение
Выбор Git-воркфлоу зависит от размера команды и частоты релизов. GitHub Flow подходит большинству команд. Инвестируйте в автоматизацию CI/CD — это окупается с первого дня.
Хороший Git-воркфлоу — это тот, которому следует вся команда. Документируйте правила и автоматизируйте проверки.
