⚠️ Дополнение вне лекций. Это задание по внешнему инструменту. Если установить
gt в вашем окружении нельзя — выполните «бумажную» версию: распишите все команды по шагам (этого достаточно для зачёта понимания).
Подготовка окружения
1. Установить Node.js (если нет) и Graphite CLI
# проверить наличие Node.js (нужен для npm)
node --version
npm --version
# установить Graphite CLI глобально
npm install -g @withgraphite/graphite-cli
# проверить
gt --version
Альтернатива (macOS/Linux):
brew install withgraphite/tap/graphite.
2. Подготовить учебный репозиторий
# можно взять репозиторий из занятия 31 или создать новый на GitHub,
# затем клонировать и зайти в него
git clone https://github.com/<ваш-логин>/learning_git.git
cd learning_git
# включить Graphite
gt init # выбрать trunk: main
# авторизоваться (токен из GitHub → Settings → Developer settings → Tokens)
gt auth -t <ВАШ_ТОКЕН>
Задание
Смоделируйте разработку небольшой фичи «карточка профиля» в виде стека из трёх веток, где каждая ветка добавляет один файл:
feat/profile-html— добавляетprofile.htmlfeat/profile-css— добавляетprofile.css(поверх предыдущей)feat/profile-js— добавляетprofile.js(поверх предыдущей)
Пошаговое решение
# --- ветка 1 ---
echo "<div class='profile'>...</div>" > profile.html
gt create feat/profile-html -a -m "feat: profile markup"
# --- ветка 2 (стекается на первую) ---
echo ".profile { padding: 1rem; }" > profile.css
gt create feat/profile-css -a -m "feat: profile styles"
# --- ветка 3 (стекается на вторую) ---
echo "console.log('profile');" > profile.js
gt create feat/profile-js -a -m "feat: profile script"
# посмотреть стек
gt log short
# отправить весь стек: 3 PR с правильными базами
gt submit --stack
Проверка: правка нижней ветки
Сымитируйте замечание ревьюера к разметке и убедитесь, что весь стек обновился автоматически:
gt bottom # на feat/profile-html
echo "<div class='profile card'>...</div>" > profile.html
gt modify -a # amend + авто-restack css и js
gt submit --stack # обновить PR'ы
Проверьте перед сдачей: в
gt log short ровно 3 ветки над main в правильном порядке, и на GitHub созданы 3 PR, где PR второй ветки нацелен на первую, а не на main.
Что сдать
- Скриншот или текст вывода
gt log short - Ссылки на 3 созданных pull request
- Одно-два предложения: чем стек оказался удобнее одной большой ветки