Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Decomposition 2026 11 05?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/siririn77-decomposition-2026-11-05-fe786cdd)
Команды запускаешь ты: доступа к твоему репозиторию у меня нет. Ниже точная последовательность, удаление — последним шагом.
## Граф
```
[1] Локальные ветки (refs/heads)
что: ветки в твоём клоне
почему важно: после git branch -D восстановление только через reflog (~30 дней)
якорь: git branch --list
когда: после бэкапа тегами
[2] Удалённые ветки (origin/*)
что: ветки на сервере
почему важно: восстановление только если сервер хранит PR/артефакты; иначе пропали
якорь: git ls-remote --heads origin
когда: отдельным подтверждением после [1]
[3] Незамёрженные коммиты
что: работа, которой нет в main
почему важно: -d откажется, -D удалит молча
якорь: git branch --no-merged main
когда: проверять до каждого удаления
[4] Текущая ветка (HEAD)
что: ветка, на которой стоишь
почему важно: git откажет её удалить; сначала git switch main
якорь: git branch --show-current
[5] Reflog и теги
что: reflog истекает, теги не истекают
почему важно: это единственный путь назад
якорь: git reflog
```
Рёбра: `[3] → [1]` риск потери; `[5] → [1]` откат; `[2]` противоречит `[5]` — тег на сервере не спасает удаление без push.
## Шаги
1. Встать на main.
```
git switch main
```
Проверка: `git branch --show-current` печатает `main`.
2. Посмотреть, что не влито в main.
```
git branch --no-merged main
```
Каждая строка здесь — ветка с работой, которой нет в main. Проверка каждой: `git log --oneline main..<ветка>`.
3. Бэкап тегами (обратимо).
```
git for-each-ref --format='%(refname:short)' refs/heads/ | grep -vx main \
| while read b; do git tag "archive/$b" "$b"; done
git push origin --tags
```
Проверка: `git tag -l 'archive/*'`.
4. Удалить локальные ветки, влитые в main (безопасно, `-d` откажется при потере).
```
git branch --merged main | grep -vx main | xargs -r git branch -d
```
Отказы `-d` — это защита, не ошибка. Оставшиеся: `git branch --no-merged main` → по каждой решаешь `git branch -D <имя>`.
5. Удалить удалённые ветки.
```
git ls-remote --heads origin
git push origin --delete <имя1> <имя2>
```
6. Проверка.
```
git branch -a
```
Ожидаемо: `main` и `origin/main`, больше ничего.
Откат: `git reflog` → `git branch <имя> <sha>`.
## Один вопрос
Удалять локальные ветки, ветки на `origin`, или обе группы?
Стоимость: локальные откатываются через reflog ~30 дней (или тегами из шага 3); удалённые на `origin` — нет, если сервер не хранит историю PR.