Как вы работаете с Git и деплоем, какие команды используете
Что проверяют
Как выглядит ваш ежедневный цикл от ветки до продакшна и понимаете ли вы, что происходит между git push и работающим сервисом. Команды сами по себе вторичны, важен процесс. Следом часто спрашивают, как вы откатываете неудачный релиз и как Go-сервис переживает перезапуск без потери запросов.
Как отвечать
Git в порядке рабочего дня:
- ветки и синхронизация:
git switch -c feature/x,git fetch,git rebase origin/mainдля линейной истории,git stashдля незаконченного; - коммиты:
git add -pдля осознанного отбора изменений,git commit --amendиgit rebase -iдля приборки перед ревью,git push --force-with-leaseпосле переписывания своей ветки; - разбор проблем:
git log --oneline --graph,git blame,git bisectдля поиска коммита с регрессией,git revertдля отмены в общей ветке вместоreset.
Go-специфика перед пушем: go mod tidy и коммит go.mod и go.sum, go vet, golangci-lint run, go test -race ./.... Версии модулей это теги semver с префиксом v, а для v2 и выше путь модуля получает суффикс /v2.
Деплой обычно выглядит так: CI (GitHub Actions или GitLab CI) гоняет проверки, собирает бинарник в многоэтапном Dockerfile с CGO_ENABLED=0, кладёт его в образ distroless или scratch, тегирует образ SHA коммита и пушит в registry. Дальше выкатка в Kubernetes через Helm или Argo CD с rolling update и readiness-пробой, миграции базы отдельным шагом через goose или golang-migrate.
Покажите знание рантайма: сервис ловит SIGTERM через signal.NotifyContext и вызывает http.Server.Shutdown(ctx), чтобы дообработать активные запросы. Откат это выкатка предыдущего тега образа или kubectl rollout undo.
Где спотыкаются
Перечисляют git add . и git commit -m и на этом заканчивают. Интервьюер ждёт рабочего процесса: как вы обновляете ветку, решаете конфликты и чистите историю.
Делают git push --force в общую ветку. --force-with-lease хотя бы не перезапишет чужие коммиты, которых вы не видели.
Деплоят образ с тегом latest. Невозможно понять, какая версия крутится, а откат превращается в угадайку.