Расскажи про опыт работы с Git

«Расскажи про опыт работы с Git» — вопрос из категории Git, который задают на 26% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мой опыт работы с Git охватывает полный цикл управления кодом в DevOps-практиках. Я использую Git не только для контроля версий, но и как основу для CI/CD пайплайнов и GitOps-подходов.

Ключевые практики и команды:

  • Ветвление: Работал с различными моделями (Git Flow, GitHub Flow, Trunk-Based Development). Для feature-веток: git checkout -b feature/JIRA-123.
  • Слияние: Предпочитаю git merge --no-ff для сохранения истории фич, но владею и git rebase для поддержания чистой линейной истории перед мержем в main.
  • Работа с историей: Использую git cherry-pick, git revert, git reflog для отладки и исправления коммитов.
  • Интеграция с CI/CD: Настраиваю хуки (pre-commit, pre-push) для линтинга и проверок. Конфигурацию пайплайнов (Jenkinsfile, .gitlab-ci.yml) также храним в репозитории.

Пример рабочего процесса для фичи:

# Создание ветки от актуального main
$ git checkout main
$ git pull origin main
$ git checkout -b feature/new-auth-endpoint

# Работа и коммиты
$ git add .
$ git commit -m "feat(auth): add new OAuth2 endpoint"
$ git push -u origin feature/new-auth-endpoint

# После code review — ребейз и мерж
$ git fetch origin
$ git rebase origin/main
$ git checkout main
$ git merge --no-ff feature/new-auth-endpoint
$ git push origin main

DevOps-инструменты: Интегрировал Git с инструментами вроде ArgoCD (для синхронизации состояния кластера Kubernetes с Git-репозиторием), использовал Git Submodules для управления зависимостями инфраструктурного кода (Terraform модули).