Git без боли — коммиты с ИИ и спасение в конфликтах
Без git ты не разработчик, а владелец одного файла который боишься редактировать. С git у тебя машина времени — можешь вернуться в любое состояние проекта. Звучит сложно, но в 95% случаев нужны 6 команд: clone, status, add, commit, push, pull. Плюс checkout и merge для веток, и git restore для отмены. Всё. Остальное — для редких случаев.
Коммиты — атомарность это всё
Главное правило: один коммит = одна логическая единица изменений. «Добавил фичу X» — да. «Поправил 5 фич + баги + рефакторинг» — нет. Почему: когда что-то сломается через месяц, ты пройдёшь по
и через bisect найдёшь конкретный коммит где сломалось. Если коммит — солянка, найти причину невозможно. Хороший комментарий: глагол + что + почему. «add reset password flow — пользователи не могли восстановить аккаунт». Плохой: «fix», «update», «изменения».
Сообщения коммитов с ИИ — за 5 секунд
Ленишься писать сообщения? Закидываешь ИИ результат
(что в стейдже) и просишь сгенерировать commit message в стиле conventional commits. Готовые инструменты: gitmoji-cli, aicommits (
), или просто скрипт. Aicommits показывает 3 варианта на выбор. Cursor умеет ещё проще: source control panel → Generate Commit Message. Качество выше чем твоё «fix» в 3 ночи.
Ветки — рабочий процесс на каждый день
Базовый flow: на main ничего не пишешь руками. Под каждую фичу — отдельная ветка от main:
Работаешь в ней, коммитишь. Готово — пушишь, открываешь Pull Request. После merge ветку удаляешь. Это даёт две вещи: (1) можешь работать над несколькими фичами параллельно (переключаясь между ветками); (2) main всегда стабильный — то что в main, можно деплоить. Без этого через месяц у тебя в коде месиво из недоделанного.
Конфликты — не страшно, если знаешь что делать
Конфликт случается когда ты и кто-то другой (или ты в другой ветке) поменяли одну и ту же строку. Git покажет файл с маркерами <<<<<<<, =======, >>>>>>>. Между ними две версии. Твоя задача — выбрать правильную (или объединить). Алгоритм: открой файл, найди маркеры, удали ненужное, оставь нужное, удали маркеры, сохрани,
С ИИ ещё проще: в Cursor скопируй фрагмент с маркерами, попроси «реши конфликт оставив обе функциональности» — даст готовый результат, проверишь и применишь.
Спасение — git reflog и git restore
Главное знать: в git почти невозможно потерять работу если ты делал коммиты. Удалил ветку?
покажет все HEAD'ы за последние 30 дней — найди свой коммит и
Сделал плохой commit?
откатит последний коммит, изменения останутся в рабочем дереве. Зафакапил файл и хочешь вернуть как в main?
Удалил файл?
(если ещё не закоммитил удаление). 90% «всё сломалось» решается одной из этих 4 команд.
# Стартуем работу над фичей git checkout main git pull origin main # синхронизируемся с удалённой main git checkout -b feat/add-dark-mode # создаём свою ветку # Работаем, делаем коммиты по мере готовности git add src/lib/theme.ts # стейджим конкретные файлы git commit -m "add theme toggle util" git add src/components/ThemeSwitch.tsx git commit -m "add UI for theme switch" # Если забыл закоммитить и main ушёл вперёд — синхронизируемся git fetch origin git rebase origin/main # перетаскиваем свои коммиты на свежий main # (если конфликты — git status покажет файлы, правишь, git add, git rebase --continue) # Пушим, открываем PR git push -u origin feat/add-dark-mode # далее на github → New Pull Request # После merge — удаляем локальную ветку git checkout main git pull git branch -d feat/add-dark-mode # === SOS-команды === # Откатить последний коммит, изменения оставить: git reset --soft HEAD~1 # Восстановить файл как в последнем коммите: git restore src/file.ts # Я случайно удалил ветку! Где она? git reflog # ищи последний хеш HEAD на удалённой ветке git checkout -b recovered-branch <хеш> # восстанавливаешь
Полный workflow одной фичи — от старта до merge