Коммит это точка сохранения
Вы узнаете
Что хранит коммит, почему последующие правки его не меняют и когда его делать.
Вайбкодинг значит, что агент меняет ваши файлы, пока вы смотрите, и часть правок что-то ломает. Коммит это точка сохранения: он хранит каждый файл ровно таким, каким тот был в этот момент, а после можно править сколько угодно, сохранённая копия не меняется. В commit.t27 файл при коммите содержал 10; затем агент сделал его 99; возврат даёт 10, а не 99. Каждый коммит добавляет одну точку сохранения в историю и ничего не перезаписывает: после третьего коммита их 3. Делайте коммит, когда программа работает, до следующей просьбы об изменении.
Попробуйте
В виджете прочитайте значение файла в трёх моментах и найдите тот, где правка агента отменена; затем в окне спецификации найдите RESTORED и скажите, что изменится, если задать ему EDITED.
A file before and after an agent edits it, and what a commit lets you bring back. Lesson 7 of the course Vibecoding from zero with t27.
specs/vibecoding/commit.t27
// SPDX-License-Identifier: Apache-2.0
; specs/vibecoding/commit.t27 -- lesson "A commit is a save point" of the course "Vibecoding from zero with t27"
; A commit keeps your files exactly as they were at that moment. Edit later as much as you like:
; the saved copy does not change, and you can go back to it. Here a file is one number.
; ASCII only, English only.
module vibecoding_commit;
; The file when you committed, and the file after an agent changed it.
pub const SAVED : u8 = 10;
pub const EDITED : u8 = 99;
; What going back brings you: the saved copy, whatever the file says now.
pub const RESTORED : u8 = 10;
; Each commit adds one save point to the history; nothing is overwritten.
pub const COMMITS_BEFORE : u8 = 2;
pub const COMMITS_AFTER : u8 = 3;
test going_back_returns_the_saved_copy {
assert RESTORED == SAVED;
}
test editing_does_not_touch_the_save {
assert SAVED == 10;
assert EDITED != SAVED;
}
test a_commit_adds_one_save_point {
assert COMMITS_AFTER == COMMITS_BEFORE + 1;
}
; Negative control: plant the bug "going back reads the edit" (RESTORED = 99) and
; two tests turn red; with the line as written they stay green.
test negative_control_a_restore_is_not_the_edit {
assert RESTORED != EDITED;
}
Все уроки
Модуль 1 · Что такое вайбкодинг
Вы описываете, агент пишет, вы запускаете и проверяете. Что такое программа, и пять мифов, проверенных тестом.
Модуль 2 · Ваш рабочий стол
Редактор с агентом рядом, десять команд терминала и чтение сообщения об ошибке.
Модуль 3 · Точки сохранения в git
Коммит это точка сохранения, ветка это безопасная проба, а ключ это пара, одна половина которой остаётся приватной.
Модуль 4 · Промптинг
Части промпта, пример вместо прилагательного и один маленький шаг за раз.
Модуль 5 · Рабочий цикл
Четыре фазы от идеи до выпуска, цикл из четырёх шагов и что делать, когда вы застряли.
Модуль 6 · Тест как судья
Тест говорит да или нет, подложенная ошибка показывает, что тест работает, а дифф читают до того, как принять.
Модуль 7 · Из чего состоит агент
Чем агент отвечает, что он умеет делать с инструментами и что хранит между сообщениями.
Модуль 8 · Начальный бот
Бот это цикл сообщений, бот строится из спеки, а секрет остаётся вне репозитория и промпта.
Модуль 9 · Ваш собственный проект
Спека для вашей идеи, одна величина, измеренная после запуска, и честный план на следующий месяц.