Генератор git-отмен: три вопроса на входе, одна команда на выходе\nЗапушено или нет, сохранить или выбросить, совместный или личный — таблица решений за инструментом, напечатанная целиком, с 90-дневными часами reflog-спасения.\n
■ space · машинное отделение · fig 1
Три вопроса — запушено или нет, сохранить или выбросить, совместный ли или личный — одна точная команда на выходе, без аккаунта, всё в браузере.
Запушено и другие тянут ветку? Revert — единственная вежливая отмена.
Закоммичено и потеряно? Спасение через reflog — брошенные коммиты остаются достижимыми ~90 дней.
01СОРТИРОВЩИК, ВЖИВУЮ
восемнадцать состояний выстраиваются в бункере — клавиши 1 · 2 · 3 бросают рычаги, барабан сортирует талон
ГДЕ ЗАПУШЕНО · НАПРАВЛЕНО REVERT · ВЕРДИКТ ЕДИНСТВЕННАЯ ВЕЖЛИВАЯ ОТМЕНА · СБРОСЫ ОТКАЗАНО
ситуация «запушено в совместную ветку» — единственная предлагаемая команда revert, потому что альтернативы жгут команды.
18 состояний на панели — три вопроса, 3 × 3 × 2 — и большинство сворачивается в ту же горстку команд.
портал ОТКАЗАНО прикручен поперёк трёх жёлобов сброса — постоянная конструкция, не рычаг: запушенные коммиты не могут войти
02ТАБЛИЦА РЕШЕНИЙ
весь мозг сортировщика, распечатан — машина гоняет этот поиск ячейка за ячейкой, без аккаунта, ничего не загружается
| Команда | История | Рабочее дерево | Общая ветка? |
|---|---|---|---|
git reset --soft HEAD~1 | отступает на 1 | правки сохранены, staged | нет — перепись |
git reset HEAD~1 | отступает на 1 | правки сохранены, unstaged | нет — перепись |
git reset --hard HEAD~1 | отступает на 1 | правки выброшены | нет — разрушительно |
git revert HEAD | добавляет коммит отмены | нетронуто | да — безопасный ход |
git reflog + git switch -c recovery <sha> | ничего не потеряно | восстановлено из reflog | спасение после чего угодно |
Вопрос совместной ветки — это весь инструмент. Всё остальное — удобство; этот — контроль повреждений.
03КОМАНДЫ, КОТОРЫЕ ОН ПЕЧАТАЕТ
четыре команды покрывают почти весь бардак — скопируйте блок, предупреждения в комментариях прилагаются
# committed, not pushed, keep the changes staged
git reset --soft HEAD~1
# committed, not pushed, keep the changes unstaged
git reset HEAD~1
# pushed, others pull this branch — the only polite undo
git revert --no-edit HEAD~1..HEAD
git push
# committed and lost — reflog knows for ~90 days
git reflog
git switch -c recovery <sha-from-the-list>
проверка: git reset --soft HEAD~1 → правки сохранены, staged · git reflog + git switch -c recovery <sha> → ничего не потеряно, восстановлено из reflog
HEAD~1..HEAD делает revert ровно названных коммитов — стоит знать, даже если инструмент наберёт его за вас04ЧТО МАШИНА ОТКАЗЫВАЕТ
отказы — это фича — где летопись отказывается гадать, сортировщик печатает стену
источник: github.com/mrsaynothing/git-undo — простой HTML и JavaScript, без этапа сборки, без зависимостей. Форкайте, перекрашивайте, вырывайте мои формулировки.
Если он сэкономит вам одну reflog-сессию в этом году — он окупил вечер, которого стоил.
конец генератора · ничего не fetched · всё локально