Help us improve
Share bugs, ideas, or general feedback.
Git workflow, branching, commits, code review, merge requests. Активируется при git, branch, commit, merge request, MR, PR, code review, rebase, cherry-pick, gitflow, trunk-based, conventional commits, squash, stash, tag, hotfix
How this skill is triggered — by the user, by Claude, or both
Slash command
/dex-skill-git-workflow:git-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Плохо: `git push -f develop` — перезаписывает историю общей ветки
Share bugs, ideas, or general feedback.
Плохо: git push -f develop — перезаписывает историю общей ветки
Правильно: git push --force-with-lease только на своей feature-ветке
Почему: коллеги теряют коммиты без предупреждения. --force-with-lease хотя бы проверяет что remote не изменился
Плохо: git rebase develop на ветке, которую уже pull-нули коллеги
Правильно: rebase только на своей ветке до push, или на уже push-нутой но solo-ветке
Почему: rebase переписывает хеши → у всех кто pull-нул — diverged history → конфликты при следующем pull
Плохо: git checkout <commit-hash> → пишешь код → git commit → git checkout develop
Правильно: git checkout -b temp-branch <hash> → работай → merge
Почему: коммиты в detached HEAD не привязаны к ветке, garbage collector удалит их через ~2 недели. Работа потеряна
Плохо: git add . → .env с DB_PASSWORD=prod123 попал в историю
Правильно: .gitignore с .env ДО первого коммита, git add по конкретным файлам
Почему: git rm .env удалит файл, но НЕ из истории. Секрет останется в git log -p. После push — секрет скомпрометирован, нужна ротация
Плохо: feature-A → feature-B → feature-C — цепочка зависимых веток
Правильно: все feature-ветки от develop, декомпозиция на независимые задачи
Почему: merge feature-A в develop → конфликты в feature-B и feature-C каскадом. Чем длиннее цепочка — тем больнее разрешать
Плохо: feature-ветка живёт 3 недели без rebase от develop Правильно: rebase от develop ежедневно или хотя бы раз в 2-3 дня Почему: чем дольше ветка живёт — тем больше расхождение. Merge после 3 недель = десятки конфликтов вместо одного-двух
Плохо: hotfix → merge в main → забыли merge в develop
Правильно: hotfix merge в main И develop (или cherry-pick в develop)
Почему: следующий release из develop не содержит hotfix → баг возвращается в production
Плохо: git commit -m "fix stuff" — все изменения за день в одном коммите
Правильно: атомарные коммиты по одному логическому изменению, conventional commits
Почему: git bisect невозможен (500 строк в одном коммите), git revert откатывает всё, changelog нечитаемый
Плохо: создал MR из 2-недельной ветки без rebase → 30 конфликтов в MR
Правильно: git rebase origin/develop перед созданием MR, разрешить конфликты локально
Почему: конфликты в MR ревьюер разрешать не будет — MR повиснет. Локально разрешать проще (есть контекст)
Плохо: feat(api): change response format — сломан контракт, но коммит не сообщает
Правильно: feat(api)!: change response format + footer BREAKING CHANGE: response field X renamed to Y
Почему: downstream-сервисы/клиенты ломаются на деплое, а не на этапе ревью. ! и footer попадают в changelog
Плохо: один MR на всю фичу — 2000 строк, 40 файлов Правильно: серия MR по 200-400 строк: инфраструктура → domain → API → тесты Почему: ревьюер не может качественно проверить 2000 строк → approve без проверки → баги в production
| Строк | Качество ревью |
|---|---|
| < 200 | Тщательный, находит баги |
| 200-400 | Хороший, ловит основное |
| 400-800 | Поверхностный, пропускает |
| > 800 | LGTM без чтения |
Плохо: ревьюер смотрит код, жмёт Approve, CI падает после merge
Правильно: CI pipeline обязателен ДО approve (GitLab: Pipelines must succeed)
Почему: "у меня локально работает" + approve → merge → broken develop для всей команды
Плохо: 20 комментариев "переименуй переменную", 0 комментариев про race condition Правильно: линтер и форматтер ловят стиль автоматически, ревьюер проверяет логику/безопасность/edge cases Почему: человек плохо ловит стиль (субъективно) и хорошо ловит логические ошибки. Автоматизируй что можно
Плохо: git cherry-pick abc123 из feature-ветки в develop вместо merge
Правильно: merge/rebase целой ветки через MR
Почему: cherry-pick создаёт дубликат коммита (другой хеш), при merge ветки позже — конфликт с самим собой
Плохо: squash merge фичи из 15 коммитов в один "Add feature X"
Правильно: squash мелких WIP-коммитов перед MR, merge с сохранением атомарных коммитов
Почему: один коммит на 1000 строк → git bisect бесполезен, git blame показывает одного автора на всё, потеря контекста "почему"
Плохо: git merge → конфликт → "принять все свои" (--ours) без разбора
Правильно: разбирать каждый конфликт, понять что делает чужой код, при сомнениях — спросить автора
Почему: --ours тихо удаляет чужие изменения. Автор конфликтующего кода узнает что его работа пропала только когда баг дойдёт до production
git push -f запрещён на shared ветках, используй --force-with-lease на своихdevelop, не от других feature-веток.gitignore настроен ДО первого коммитаnpx claudepluginhub dex-it/claude-code-marketplace --plugin dex-skill-git-workflowGuides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.