EvolCode
треки/Инструменты вайбкодера·02 / 05
13 мин чтения

Git без боли — коммиты с ИИ и спасение в конфликтах

Без git ты не разработчик, а владелец одного файла который боишься редактировать. С git у тебя машина времени — можешь вернуться в любое состояние проекта. Звучит сложно, но в 95% случаев нужны 6 команд: clone, status, add, commit, push, pull. Плюс checkout и merge для веток, и git restore для отмены. Всё. Остальное — для редких случаев.

Коммиты — атомарность это всё

Главное правило: один коммит = одна логическая единица изменений. «Добавил фичу X» — да. «Поправил 5 фич + баги + рефакторинг» — нет. Почему: когда что-то сломается через месяц, ты пройдёшь по

$ git log

и через bisect найдёшь конкретный коммит где сломалось. Если коммит — солянка, найти причину невозможно. Хороший комментарий: глагол + что + почему. «add reset password flow — пользователи не могли восстановить аккаунт». Плохой: «fix», «update», «изменения».

Сообщения коммитов с ИИ — за 5 секунд

Ленишься писать сообщения? Закидываешь ИИ результат

$ git diff --cached

(что в стейдже) и просишь сгенерировать commit message в стиле conventional commits. Готовые инструменты: gitmoji-cli, aicommits (

$ npm i -g aicommits

), или просто скрипт. Aicommits показывает 3 варианта на выбор. Cursor умеет ещё проще: source control panel → Generate Commit Message. Качество выше чем твоё «fix» в 3 ночи.

Ветки — рабочий процесс на каждый день

Базовый flow: на main ничего не пишешь руками. Под каждую фичу — отдельная ветка от main:

$ git checkout -b feat/add-payments

Работаешь в ней, коммитишь. Готово — пушишь, открываешь Pull Request. После merge ветку удаляешь. Это даёт две вещи: (1) можешь работать над несколькими фичами параллельно (переключаясь между ветками); (2) main всегда стабильный — то что в main, можно деплоить. Без этого через месяц у тебя в коде месиво из недоделанного.

Конфликты — не страшно, если знаешь что делать

Конфликт случается когда ты и кто-то другой (или ты в другой ветке) поменяли одну и ту же строку. Git покажет файл с маркерами <<<<<<<, =======, >>>>>>>. Между ними две версии. Твоя задача — выбрать правильную (или объединить). Алгоритм: открой файл, найди маркеры, удали ненужное, оставь нужное, удали маркеры, сохрани,

$ git add файл
$ git commit

С ИИ ещё проще: в Cursor скопируй фрагмент с маркерами, попроси «реши конфликт оставив обе функциональности» — даст готовый результат, проверишь и применишь.

Спасение — git reflog и git restore

Главное знать: в git почти невозможно потерять работу если ты делал коммиты. Удалил ветку?

$ git reflog

покажет все HEAD'ы за последние 30 дней — найди свой коммит и

$ git checkout его-хеш

Сделал плохой commit?

$ git reset HEAD~1

откатит последний коммит, изменения останутся в рабочем дереве. Зафакапил файл и хочешь вернуть как в main?

$ git restore файл

Удалил файл?

$ git restore файл

(если ещё не закоммитил удаление). 90% «всё сломалось» решается одной из этих 4 команд.

примерbash
# Стартуем работу над фичей
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

главное
  • 01Один коммит = одна логическая единица. «Добавил X», не «изменения за день».
  • 02aicommits / Cursor source panel сгенерируют commit message по diff за секунду — пользуйся.
  • 03Никогда не пиши прямо в main. Ветка под фичу → PR → merge → удалить ветку.
  • 04Конфликты решаются: открыть файл, удалить маркеры <<<<, выбрать правильную версию, add+commit. Cursor может сделать это за тебя.
  • 05git reflog + git reset + git restore = твой санитарный набор. С ними почти невозможно потерять работу.
проверь себя
01Почему важно делать атомарные коммиты (один коммит = одна логическая единица)?
02Ты случайно удалил локальную ветку с несохранённой работой. Что делать?
03В чём плюс работы через ветки feat/* вместо коммитов прямо в main?
следующий урок: npm и зависимости — без сломанного node_modules