JavaRush /Курси /Claude Code SELF /Контроль версій на пальцях: VCS

Контроль версій на пальцях: VCS

Claude Code SELF
Рівень 13 , Лекція 1
Відкрита

1. main — твій чистовик, його не чіпають

Олег ставить кухоль на край столу, підсуває стілець — видно, тема йому справді близька.

— Дивись, — починає він. — Контроль версій, git, цей твій, — це не страшний набір команд. Це система, у якої одна задача: щоб ви могли повернутися назад. Усе, що я зараз розповім, — про це одне. Про зворотність. Запамʼятайте чотири слова — і вся картина складеться у вас у голові. Ми, старі, на цьому пів життя просиділи, тож слухайте того, хто цю систему знає не з чуток.

— Давай, дядь Олеже.

— Перше слово — main. Головна лінія проєкту. Це твій теперішній робочий стан — те, що працює і що ти показуєш людям. Твій портал, який ти сьогодні підтримуєш. Головне правило про main одне: його не можна ламати. Це чистовик, який ти здаєш.

Олег дістає ще один образ зі свого досвіду:

— Памʼятаєш мій диплом? Була в мене чистова версія — та, що несеш на захист. У ній не експериментують і не пробують «а раптом так краще». Її бережуть як зіницю ока. От main — це твій чистовик. Оригінал проєкту, який іде замовнику.

Тьома киває. З порталом усе сходиться один до одного: ось він, робочий, і чіпати його страшно. Це і є main.

2. Гілка — пісочниця, де можна ламати

— Стоп, — Тьома відразу ловить суперечність. — Якщо main ламати не можна, а мені в reward-flow лізти треба — то де працювати? Я ж не можу не чіпати робоче, якщо завдання саме в ньому.

— А ось тут друге слово — гілка. — Олег явно чекав на це запитання. — Гілка — це ізольована копія-пісочниця для конкретного завдання. Створюєш гілку й працюєш у ній як хочеш: ламай, пробуй, переписуй. А main увесь цей час стоїть осторонь, недоторканий, і чекає.

Він повертається до диплома:

— Хочеш переписати розділ по-новому, а раптом вийде гірше? Що робить розумна людина? Бере чорнову копію й експериментує в ній. Чистовик не чіпає. Вийшло добре — переносить правку в чистовик. Вийшло погано — викидає чернетку геть, і все, чистовик як стояв, так і стоїть. Жодної подряпини.

І тут Тьома сам упізнає в цьому відповідь на недавнє запитання Льохи:

— Так це ж моє «провальний підхід викидаю цілком»! Я не дочищаю підхід — просто викидаю чорнову гілку разом з усім сміттям, а main навіть не помічає, що я там щось пробував.

— Сам дійшов, салаго. — Олег усміхається. — Ось це і є захист. Провальний підхід викидається разом із гілкою, а main залишається чистим. Можеш дозволити своєму електронному помічнику накоїти в гілці будь-якої дурниці — робочого це не зачепить.

3. Коміт — чесна точка повернення на диску

— Добре, гілка, — киває Тьома. — А ось ця «точка повернення», до якої я відмотуюся, — це що саме?

— Третє слово — коміт. — Олег не поспішає. — Поки працюєш у гілці, ти час від часу фіксуєш стан — створюєш коміт. Коміт — це чесна точка повернення, записана в історію проєкту. До будь-якого коміту потім можна повернутися.

— Це як /rewind? Теж відкат?

— А ось тут не плутай, це важливо. — Олег піднімає палець. — Твій /rewind живе в памʼяті розмови з агентом. Сесія скінчилася — відмотувати нічого, розмову забуто. А коміт живе на диску, в історії проєкту. Назавжди. Сесія скінчилася, ноут заснув, агент усе забув — а коміт лежить на місці й чекає. Тому він і надійніший за будь-яку кнопку скасування. Чому ж у тебе все зірвалося тієї ночі? Кнопка не дотягнулася, бо правки були на диску. А коміт — він сам на диску і є.

Тьома повільно киває. Ось воно. Та стрічка з нічного логу — «жодної точки повернення» — перестає бути технічною дрібницею просто на очах. За всю ніч агент жодного разу не поставив коміт. Жодної чесної позначки «тут ще все було цілим» на диску. Тому й падати було нікуди — позаду жодної точки.

— Як на кресленнях штамп із датою, — підкидає Олег образ зі свого. — «Ревізія три, усе збігається». Лежить в історії проєкту, і ти в будь-який момент до неї повернешся. Оце й є коміт.

4. Відкат і диф — збираємо модель цілком

— І останнє слово — відкат. — Олег підсумовує. — Якщо в гілці все поїхало, ти повертаєш її до останньої чистої точки — до хорошого коміту — однією операцією. Усе зайве, що нароблено після нього, стирається. Запоров чернетку правками — відкотив до останнього хорошого збереження й продовжуєш звідти.

— Тобто «зламав — відкотив — ніби нічого й не було», — Тьома формулює сам. — Не «зламав — дві години розгрібаю руками».

— Саме так. І поруч із відкатом — ще одне слово, без якого весь захист дірявий: диф. Перегляд змін. Відкат рятує вже після того, як агент накоїв. А диф працює раніше — до того, як ти прийняв правку. Перш ніж упустити зміни в проєкт, ти дивишся, що саме змінюється: що додано, що прибрано. Це фільтр між «агент запропонував» і «потрапило в код». Той самий твій «спершу гляну, що накоїв», який ти записав у блокнот. Відкат — сітка знизу, диф — фільтр на вході; потрібні обидва.

Олег проводить пальцем по столу, ніби малює:

main  ●────●────●               ← цінна робоча лінія (бережемо)
            └── fix-reward ●──●  ← гілка-пісочниця (експерименти)
                          коміти = точки повернення
            ← відкат поверне гілку до чистої точки

— Ось і вся модель. main живе своїм чистим життям. Під ним — гілка, де ви пробуєте. У гілці — коміти-точки. Щось пішло не так — відкат до точки, а main навіть не здригнувся.

Тьома дивиться на уявну схему й сам підбиває підсумок:

— Слухай, це ж мій зоопарк папок, тільки по-людськи. портал, портал2, портал-фінал2 — це я руками намагався зробити ось ці самі точки повернення. Тільки криво: яка папка справжня, уже через день не памʼятаєш.

— О! — Олег аж оживає. — Ті папки були твоєю саморобною, дірявою історією станів. Рівно як мій диплом із фінал_випр2. git робить те саме, тільки чесно і в одному місці. Жодних фінал-точно-3. Одна лінія, на ній позначені точки, і завжди ясно, де ти й куди відкочуватися.

— А команди? — Тьома тягнеться за блокнотом. — Їх же, напевно, купа. Показуй, записуватиму.

— О, команди — це окрема розмова, — Олег хрустить пальцями. — І добре, що ти взявся за ручку. Зараз покажу, як це робиться по-справжньому, руками. Як мене вчили.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ