Пошук уроків, статей та іншого контенту
Проблема відстеження змін у коді без системи контролю версій — і як Git її вирішує.
Без системи контролю версій розробники намагаються відстежувати зміни вручну — копії файлів з іменами на кшталт project_final_v2_ACTUALLY_final.zip, коментарі «закоментувати стару версію на випадок, якщо знадобиться». Це не масштабується: неможливо зрозуміти, хто й коли змінив конкретний рядок, неможливо безпечно повернутись до попереднього стану, і абсолютно неможливо, щоб кілька людей одночасно працювали над тим самим кодом без постійного переписування роботи одне одного.
Git відстежує кожну зміну файлів проєкту як послідовність знімків (commits) — кожен коміт фіксує повний стан проєкту на певний момент і посилається на попередній коміт, утворюючи історію. «Розподілена» означає, що кожен розробник має повну копію всієї історії проєкту локально на своїй машині, а не лише поточну версію файлів — на відміну від старіших централізованих систем, де історія існувала тільки на центральному сервері.
Повна історія змін — хто, коли й чому (через повідомлення коміту) змінив конкретний рядок коду, назавжди доступна для перегляду.
Безпечні експерименти — гілки (детально в наступному модулі) дозволяють спробувати ризикований підхід, не заважаючи основній, стабільній версії коду.
Паралельна командна робота — кілька людей одночасно змінюють різні частини того самого проєкту, а Git надає механізми (злиття, детально далі) звести ці зміни докупи.
Можливість повернутись назад — якщо новий коміт зламав щось, попередній робочий стан завжди доступний і відновлюваний.
Git — сам по собі інструмент командного рядка (і бібліотека), що працює локально. GitHub, GitLab, Bitbucket — окремі сервіси хмарного хостингу для Git-репозиторіїв, що додають зверху веб-інтерфейс, спільний доступ для команди, Pull Request-и (окремий урок далі) — Git не вимагає жодного з них для роботи локально.
Ручне копіювання файлів проєкту як «резервних копій» замість використання Git — втрачає всі переваги системи контролю версій (діффи, історію, злиття) заради ілюзії безпеки.
Плутати Git із GitHub — Git це технологія контролю версій, GitHub — один із багатьох сервісів хостингу для репозиторіїв, побудованих на Git.
Відкладати вивчення Git «на потім», продовжуючи працювати без нього, — чим довше проєкт живе без контролю версій, тим складніше й ризикованіше почати його використовувати заднім числом.
Git — розподілена система контролю версій, що фіксує зміни проєкту як послідовність комітів, кожен із повною копією історії доступною локально в кожного розробника. Це дає повну історію змін, безпечні експерименти через гілки, можливість кількох людей паралельно працювати над тим самим проєктом і надійний спосіб повернутись до попереднього робочого стану.