1. Вступ до контролю версій

Що таке контроль версій?

Березень 2006 року. Друга ночі. Я студент третього курсу комп’ютерних наук, і вже завтра вранці маю показати свій перший у житті фриланс-проєкт важливому клієнту.

Є лише одна проблема...
Клятий застосунок не працює!

Я пишу код 14 годин поспіль, тож уже й не згадаю, що саме спричинило теперішню проблему.

Ще вчора (чи позавчора?) підсистема застосунку, яка відповідає за дані, працювала нормально. Але тепер, замість цін на акції, я бачу на екрані лише купу помилок.

Ти пробував це виправити?

Я намагався відкотити все назад, але... надворі 2006 рік, тож мій редактор коду може відкотити хіба що хвилин п’ять моєї нічної писанини.

До того ж, мені не по собі від думки, що якщо я зараз випадково натисну не ту клавішу, то можу затерти весь свіжий код, який щойно написав.

Хіба що...

...хіба що мій старезний комп’ютер на Windows 98 встигне зависнути першим і пошкодити всі відкриті файли.

Хм... а ти не робив резервних копій?

Ох, я в такій халепі! Єдина моя надія — це резервна копія, яку я зробив учора... чи минулого тижня? Вона була на флешці? А може, на CD?

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

Що це у тебе на столі за колонкою?

О, це ж та сама дискета 💾, на яку я вчора записав резервну копію! Це просто диво!

Стривай, спершу треба розпакувати архів із дискети.

Схрестімо пальці 🤞
C:\> unrar x B:\backup.zip C:\ Extracting... 10% Extracting... 20% Extracting... 30% Extracting... 40% Extraction error. THE ARCHIVE IS CORRUPT.
Халепа! 😅

Я не можу дістати файли з резервної копії! Невже магніт всередині колонки пошкодив дискету?

Схоже, це кінець. Я по-справжньому влип.

Через 8 годин...

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

Але, на жаль, тоді було вже запізно. Я зірвав дедлайн і втратив клієнта. Зате один урок засвоїв на все життя.

Який саме?
Треба серйозніше ставитися до відстеження змін у своєму коді.

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

Сьогодні контроль версій непомітно вбудований у багато застосунків. Наприклад, коли ти редагуєш документ у Google Docs, то можеш переглянути історію змін і повернути документ до попередньої версії. Те саме стосується файлів у Dropbox та багатьох інших сервісах. У таких застосунках історія версій ведеться автоматично, і тобі не треба про це думати.

Але існують і окремі системи контролю версій, як-от Git, Mercurial або Subversion, де ти явно керуєш версіями й маєш значно точніший контроль над усім процесом.

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

Далі
Хочеш спробувати Сюжетний режим?

Проходь курс так, як він і задуманий: маленькими порціями, у сфокусованому лінійному порядку, поступово відкриваючи статті Gitopedia. Будь-коли можна продовжити зі справжнім Git у VS Code/Cursor/Antigravity/Windsurf.

Сюжетний режим
БЕЗКОШТОВНО
але потрібен вхід