JavaRush /Курси /Claude Code SELF /Як профі зберігають історію

Як профі зберігають історію

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

1. Як професіонали зберігають історію: знайомтеся, git

— Слухай, а раз я тепер майже в темі, — Тьома сам ставить наступне запитання, і в голосі вже чується та недбалість, ніби він питає не про себе, а так, із цікавості, — як тоді живуть справжні розробники? У них же в проєктах тисячі файлів, і народу купа, усі правлять одне й те саме. Якби вони плодили папки, як… ну, як дехто, — вони б одне одного повбивали за день.

— Повбивали б, — погоджується Льоха. — Тому вони так і не роблять. У них є нормальна штука. І в неї є імʼя — git.

Льоха не поспішає з деталями, а спочатку дає загальну картину:

— Професіонали не тримають склад копій. Вони тримають одну стрічку історії, у якій усі стани проєкту записані по черзі — акуратно, один за одним. Не купу папок у кутку, а упорядковану історію. Це і є git.

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

— Майже. Тільки не «заховані якось», а акуратно записані — з порядком і підписами: ось цей стан був таким-то, потім таким-то. Зараз покажу на штуці, яку ти сто разів бачив.

2. Історія версій у Google Docs: три можливості git

— А як це взагалі виглядає? — Тьома недовірливо зводить брови. — Стрічка — це що, теж папки, тільки в ряд?

— Не папки. Найзрозуміліший образ — історія змін у Google Docs, — Льоха чіпляється за те, що Тьома точно бачив. — Ти ж працював у Google Docs? Документ один. Ти його правиш. Але будь-коли відкриваєш «історію змін» і бачиш: ось таким він був уранці, ось таким — годину тому, ось що і хто поміняв між цими точками. І можеш відкотитися до будь-якого минулого стану. Зверни увагу: документ при цьому не роздвоюється на договір_фінал2. Він один. А вся історія акуратно лежить поруч із ним.

Тьома прокручує це в голові — і справді, він же так робив. Писав колись спільний документ, хтось усе видалив, а він зайшов в історію, знайшов потрібну точку й повернув усе як було. Жодних копій документ_2, документ_нормодин файл, і все його життя записане збоку.

— А, то я цим уже користувався, тільки в доках, — каже він. — І жодного разу не подумав, що код можна так само.

— Ага, саме так. Та сама штука, тільки для коду. У неї просто своє імʼя — git. Він робить точно те саме для коду, — продовжує Льоха й перераховує три речі. — Перше: зберігає стрічку станів проєкту — не купу копій, а упорядковану історію. Друге: дає змогу повернутися до будь-якого збереженого стану. Третє: показує, що саме змінювалося між станами — те саме, чого твої папки тобі ніколи не показували.

Тьома хапає думку на льоту й усміхається:

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

— Саме так, — киває Льоха. — git — це і є професійна система зберігання версій. Одна історія, і завжди можна відмотати назад, бачачи, що змінювалося.

І Льоха добиває третім пунктом те, що особливо чіпляє Тьому:

— І ось це «видно, що змінювалося» — воно тобі сьогодні просто в болюче місце. Памʼятаєш, ти не міг зрозуміти, чим final відрізняється від final2? Сидів, ворожив? У git ти б відкрив історію і побачив різницю рядок у рядок: ось тут додали рослини, ось тут поправили рахунок. Папки тобі цього ніколи не показували — вони німі, просто лежать. А історія — промовиста.

— Ба більше. Git настільки зручний, що його буквально мільйони розробників використовують для спільної роботи над публічними проєктами, — додає Льоха. — Місце, куди такі проєкти викладають, щоб працювати разом, усією командою, називається GitHub. Це поки що просто слово до скарбнички — але тепер ти його помічатимеш усюди. Нехай лежить у голові поруч із git.

3. Що використовувати замість git зараз

Льоха, як завжди, сідає на улюбленого коня:

— А всередині git є така штука — гілки. Це коли основна лінія, на якій живе робоча гра, так і зветься — прод. Це версія, яка працює, і її не ламають.

— А тепер уяви: хочеш зібрати другу версію Тетріса, космічну, а робочої чіпати страшно. Ти створюєш гілку — окрему лінію поруч із прод. Далі всі експерименти йдуть у ній: прод стоїть цілий, а ти у своїй гілці хоч усе перевертай. Підійшло — вливаєш назад, не підійшло — викидаєш гілку цілком, і…

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

Льоха сміється й одразу здає назад:

— Прийнято. І знаєш, ти навіть маєш рацію, що гальмуєш. git — потужний, але в нього свої поняття: гілки, коміти, цілий набір команд. Вивалити це все на тебе просто зараз — найвірніший спосіб усе заплутати й відбити бажання. Тому сьогодні твоє завдання просте: запамʼятати, що є така професійна система зберігання версій, і зветься вона git. Імʼя в голові — цього поки досить.

— А коли по-справжньому? — обережно цікавиться Тьома.

— Коли в тебе зʼявиться проєкт, який справді страшно втратити. Зараз-то ти Тетрісом бавишся — ну зламав, ну зібрав заново, не трагедія. А от коли буде річ, за яку душа болить, — тоді git і розкриється як серйозна страхувальна сітка. І повір, ти сам до нього прийдеш без мене: одного дня зіткнешся з ситуацією, де простих інструментів не вистачить, і згадаєш — а, було ж те саме професійне рішення. Ось тоді й сядеш розбиратися, уже з чітким «навіщо».

— Оце по-нашому, — Тьома хмикає і ляскає по столу. — А то я вже приготувався, що мене зараз, як першокласника, посадять зубрити цей ваш git, рядок за рядком. А виявляється, імʼя записав, кивнув розумно — і вільний. Люблю, коли розумні люди самі дозволяють не вчити зайвого.

— Можна. І це нормально, навіть правильно. Імʼя записав, ідею зрозумів — на сьогодні досить.

— І до речі, щоб ти не лякався наперед, — додає Льоха. — Коли настане день, установлювати його вручну тобі не доведеться. Скажеш агенту «встанови git» — він і встановить, і версію покаже. Як і будь-який інший інструмент.

— У сенсі просто словами? — Тьома навіть відривається від екрана.

— А ти вже забув, із чого ми починали? Ти йому в перший же день так півверстака й зібрав. Інструменти встановлює агент, твоя справа — сказати, які саме. Так що вся страшна професійна система одного дня зведеться для тебе до одного рядка в чаті.

— А поки для твоїх експериментів вистачить простішого інструмента, — додає Льоха. — Кнопки скасування просто всередині ШІ-агента. Легкої, швидкої, без жодних гілок і комітів. Ось її зараз і покажу — і це вже не туманне «потім», а прямо зараз, сьогодні.

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