От нуля
до коммита.
Команды смешанного уровня, Mac и Windows, часть людей с Git, часть без. К концу гайда — каждый умеет пушить, мержить и работать с Claude Code в Cursor.
§ 00TL;DR — что должно быть в конце
- Аккаунт на GitHub + Git настроен локально (имя, email, SSH-ключ)
- Установлен Cursor
- Установлено расширение Claude Code внутри Cursor и залогинены
- Команда работает в одном репозитории на GitHub
- Каждый участник клонировал репо, умеет делать
pull/commit/push - Договорились о ветках:
mainзащищена, каждый работает в своей feature-ветке, мерж через Pull Request - Проект задеплоен на Vercel (или Railway) — есть публичный URL для демо
Все галочки стоят — можно кодить.
§ 01Что куда устанавливается
| Инструмент | Зачем | Где скачать |
|---|---|---|
| Git | Локальная утилита для версионирования. Без неё ничего не работает. | Mac: уже есть. Windows: git-scm.com |
| GitHub аккаунт | Облако, где живёт код команды | github.com/signup |
| Cursor | IDE с AI-ассистентом, форк VS Code | cursor.com |
| Claude Code | Агент Anthropic в Cursor — план → диф → ревью | Из Cursor → Extensions |
Cursor и Claude Code — это две разные AI-системы в одном окне. Cursor: быстрые правки и автокомплит. Claude Code: длинные задачи, где нужен план перед изменением файлов. Используйте обе.
§ 02GitHub + Git — база
1.1 Создать аккаунт GitHub
- Открой github.com/signup
- Используй рабочую/постоянную почту — потом к ней привязываются коммиты
- Выбери бесплатный план
1.2 Установить Git
git --version
# Если выдаст версию — Git уже стоит.
# Если попросит установить — соглашайся.
# Альтернатива через Homebrew:
brew install git
- Скачай: git-scm.com/download/win
- Запусти инсталлер, везде Next (дефолты ок)
- После установки открой Git Bash (появится в меню «Пуск»)
1.3 Настроить Git (один раз на машине)
В терминале (Mac: Terminal, Windows: Git Bash):
git config --global user.name "Ivan Petrov"
git config --global user.email "ivan@example.com" # та же почта, что в GitHub
git config --global init.defaultBranch main
1.4 SSH-ключ и привязка к GitHub
Чтобы не вводить пароль при каждом push.
ssh-keygen -t ed25519 -C "ivan@example.com"
# Нажимай Enter на все вопросы (без пароля для скорости)
Скопировать публичный ключ:
pbcopy < ~/.ssh/id_ed25519.pub
cat ~/.ssh/id_ed25519.pub | clip
Laptop, вставь ключ → Add SSH keyПроверка:
ssh -T git@github.com
# Должно вывести: "Hi <твой логин>! You've successfully authenticated..."
§ 03Установка Cursor
- Открой cursor.com → Download
- Установи как обычное приложение
- При первом запуске: импортируй настройки VS Code, если предложит (если работал в VS Code) — иначе skip
- Залогинься (можно через GitHub аккаунт)
При первом запуске согласись установить команду cursor в PATH — пригодится позже. Если пропустил: Cmd+Shift+P → «Shell Command: Install 'cursor' command».
§ 04Claude Code внутри Cursor
3.1 Установка расширения
Cmd+Shift+X (Mac) / Ctrl+Shift+X (Windows) — откроется панель ExtensionsПосле установки слева в сайдбаре появится иконка Claude.
3.2 Логин в Claude Code
- Кликни на иконку Claude в сайдбаре
- Расширение проведёт через авторизацию — нужен аккаунт Anthropic
- Если у команды есть Claude Pro / Max — логинься этим аккаунтом
- Если нет — потребуется API-ключ или подписка
- После логина увидишь чат-панель
3.3 Как работают два AI в одном окне
| Что нужно | Используй |
|---|---|
| Автодополнение по Tab, быстро дописать строку | Cursor (встроенный) |
Cmd+K — точечная правка выделенного куска | Cursor |
| Долгая задача «сделай фичу», агент сам ходит по файлам | Claude Code |
| Нужен план перед тем как трогать код | Claude Code (plan mode) |
| Запустить тесты, посмотреть что упало, починить | Claude Code |
В Claude Code используйте Plan mode для рискованных изменений — сначала покажет план, потом по аппруву начнёт менять файлы. Checkpoints позволяют откатиться к любому состоянию.
3.4 Если расширение не цепляется к Cursor (Mac)
Известная проблема. Воркэраунд:
cursor --install-extension ~/.claude/local/node_modules/@anthropic-ai/claude-code/vendor/claude-code.vsix
Если /doctor в Claude Code говорит про global installation — выполни /migrate-installer.
§ 05Локальный проект — два сценария
Сценарий А: проект с нуля
Делает капитан команды (один человек).
- На GitHub: правый верх + → New repository
- Repository name:
team-name-hackathon - Visibility: Private
- Галочка Add a README file
- Create repository
Клонировать к себе:
# В папке где хочешь хранить проекты (например ~/projects)
cd ~/projects
git clone git@github.com:<твой-логин>/team-name-hackathon.git
cd team-name-hackathon
Открыть в Cursor:
cursor .
Или: Cursor → File → Open Folder → выбрать папку.
Сценарий Б: уже есть локальный код
cd /путь/к/твоему/проекту
git init
git add .
git commit -m "initial commit"
На GitHub создай пустой репо (БЕЗ README — чтобы не было конфликта), потом:
git remote add origin git@github.com:<логин>/<репо>.git
git branch -M main
git push -u origin main
§ 06Командная работа — самое важное
Эта часть — где обычно ломаются хакатоны. Прочитайте все.
5.1 Базовая модель: один репо, разные ветки
Никто не пушит напрямую в main. Все фичи — через Pull Request.
5.2 Капитан добавляет команду
GitHub → ваш репо → Settings → Collaborators → Add people → введи логины членов команды. Они получат приглашение на почту, должны принять.
5.3 Каждый клонирует репо
cd ~/projects
git clone git@github.com:<капитан>/team-name-hackathon.git
cd team-name-hackathon
cursor .
5.4 Рабочий цикл — заучить наизусть
Каждый раз перед началом работы
git checkout main # переключиться на main
git pull origin main # подтянуть последние изменения
git checkout -b feature/моя-фича # создать свою ветку
В процессе работы (часто, маленькими порциями)
git add .
git commit -m "добавил форму логина"
git push origin feature/моя-фича
Когда фича готова
После того как чужой PR замержили в main
git checkout main
git pull origin main # подтянуть мерж к себе
5.5 Конфликты — что делать когда красное
Ты и коллега изменили один и тот же файл. GitHub ругается.
git checkout feature/моя-фича
git pull origin main # подтянуть свежий main в свою ветку
# Если есть конфликты — Cursor покажет метки в файлах:
# <<<<<<< HEAD
# твой код
# =======
# код из main
# >>>>>>> main
В Cursor можешь нажать Accept Current / Accept Incoming / Accept Both прямо в файле, или попроси Claude Code разрулить:
«В этом файле git-конфликт. Разреши его, сохранив обе функциональности.»
После разрешения:
git add .
git commit -m "merge main into feature/моя-фича"
git push
5.6 Минимум договорённостей на старте
Сядьте на 5 минут и договоритесь:
- Кто капитан репозитория (создаёт, мержит PR)
- Формат коммита — самое простое:
git commit -m "что сделано", главное единообразно - Имена веток —
feature/что-делаю,fix/что-чиню - Защита main — Settings → Branches → Add rule →
main→ ✅ Require a pull request before merging. Спасает от случайного push в main. - Куда складывать секреты — никогда в код. В
.env+ в.gitignore. Случайно запушил — токен сразу ротировать.
5.7 .gitignore — поставь сразу
В корне репо создай файл .gitignore:
node_modules/
.env
.env.local
.DS_Store
*.log
dist/
build/
.venv/
__pycache__/
.cursor/
.claude/
Закоммить:
git add .gitignore
git commit -m "add .gitignore"
git push
§ 07Шпаргалка по Git
| Команда | Что делает |
|---|---|
git status | Что изменено, в какой ветке нахожусь |
git pull | Подтянуть с GitHub в текущую ветку |
git push | Отправить свои коммиты на GitHub |
git checkout main | Переключиться на main |
git checkout -b feature/x | Создать новую ветку и переключиться |
git add . | Добавить все изменения в коммит |
git commit -m "msg" | Сохранить изменения локально |
git log --oneline -10 | Последние 10 коммитов |
git diff | Что именно я поменял с прошлого коммита |
git stash | Отложить изменения «в карман» (не коммитя) |
git stash pop | Достать обратно |
Если потерялся — git status почти всегда подскажет, что делать дальше.
§ 08Типовые косяки на хакатоне
| Симптом | Что делать |
|---|---|
Permission denied (publickey) при push | SSH-ключ не привязан к GitHub. Вернись к 1.4 |
Запушил .env с ключами | Сразу ротируй ключи. Из истории: git rm --cached .env + добавь в .gitignore |
Your branch is behind origin/main | git pull origin main |
| Случайно закоммитил не в ту ветку | git reset HEAD~1 (откатит последний коммит, изменения останутся) → переключись → закоммить заново |
| Claude Code не видит файлы | Открой папку проекта через File → Open Folder, а не отдельный файл |
| Два человека в одной ветке мешают друг другу | По ветке на человека. Всегда. |
node_modules попал в репо | git rm -r --cached node_modules + добавь в .gitignore |
§ 09Рабочий поток с Claude Code
Не используй Claude Code как автокомплит — для этого Cursor. Claude Code — для законченных задач.
Хорошие промпты
- «Сделай страницу логина с формой email/password, валидацией и обработкой ошибок. Используй существующий стиль из
src/components/.» - «Запусти тесты, посмотри что упало, почини.»
- «Прочитай README и предложи план MVP на 4 часа.»
Включи Plan mode → дождись плана → проверь → апрувни. Это спасёт от того, что агент перепишет половину проекта не туда.
Сделай git diff и посмотри что Claude Code реально изменил перед коммитом. Не коммить вслепую.
§ 10Деплой — показать рабочий проект на домене
Дефолтный выбор для хакатона — Vercel. От пуша до публичного URL вида your-app.vercel.app проходит ~5 минут. Альтернативы — ниже.
9.1 Когда что выбирать
| Платформа | Когда брать | Тип проекта |
|---|---|---|
| Vercel | Дефолт. GitHub-интеграция в 2 клика, превью на каждый PR | Next.js, React, Vue, статика, JS-fullstack |
| Netlify | Альтернатива Vercel, тот же класс | То же, что Vercel |
| Cloudflare Pages | Если важна максимальная скорость edge | Статика + Cloudflare Workers |
| Railway | Если backend на Python/Go/Ruby или нужна БД | Любой язык, Postgres / Redis в один клик |
| Render | Альтернатива Railway, больше бесплатных часов | Docker, long-running процессы |
| GitHub Pages | Чистая статика без сборки | HTML/CSS/JS без бэка |
Frontend / Next.js / React / Vue / статика → Vercel. Берите его по умолчанию. Backend на Python/Go/Node-сервере или нужна БД → Railway вторым вариантом.
9.2 Деплой на Vercel — 5 минут от пуша до домена
your-project.vercel.app9.3 Что важно после первого деплоя
Автодеплой работает сам
Каждый git push в main → новый продакшен-деплой. Каждый PR → отдельный preview-URL вида your-project-git-feature-x.vercel.app. Это магия — используйте, чтобы показывать работающую фичу до мержа.
Кастомное имя проекта
Project Settings → General → Project Name. URL станет chosen-name.vercel.app. Действует имя в течение пары минут.
Переменные окружения и секреты
Project Settings → Environment Variables. Добавь все ключи (OpenAI API, Anthropic API, Supabase и т.п.) с областью Production / Preview / Development. После добавления передеплой — Deployments → последний деплой → ... → Redeploy.
Build падает с «Module not found» или «env variable undefined». Проверьте: (1) все зависимости в package.json, не глобально установленные; (2) все ENV-переменные прописаны в Vercel; (3) если используете Next.js — клиентские переменные начинаются с NEXT_PUBLIC_.
9.4 Командная работа на Vercel
По умолчанию проект привязан к личному аккаунту того, кто его создал. Чтобы у всей команды был доступ к логам и настройкам:
- Создайте Vercel Team — справа сверху → Create Team. Hobby-тариф для команды бесплатный.
- Перенесите проект в команду: Project Settings → Advanced → Transfer Project
- Пригласите участников: Team Settings → Members → Invite
9.5 Деплой backend / нестандартного стека на Railway
Если у вас Python (FastAPI, Flask, Django), Go, Ruby или нужна Postgres:
requirements.txt, go.mod, package.json и т.п.)your-app.up.railway.appFrontend (Next.js / React) на Vercel + Backend (Python / Node API) на Railway + БД (Postgres) на Railway. Frontend ходит в API по полному URL Railway.
9.6 Чеклист перед демо
- Открой публичный URL в режиме инкогнито — должно работать
- Все ENV-переменные на проде установлены
- Проверь главный user-flow от начала до конца
- URL запиши в README репозитория — судьи найдут
- На всякий случай — скриншоты ключевых экранов, если упадёт прод во время демо
§ 11Финальный чеклист
Перед стартом хакатона убедитесь:
- Все в команде могут запушить тестовый коммит в репо
- У всех работает Claude Code (открыли, спросили «привет», получили ответ)
mainзащищена, договорились о ветках.gitignoreна месте- Секретов в репо нет
- Капитан назначен
- Проект задеплоен, публичный URL открывается у всех в команде
- Открыт один общий канал связи для координации