Коли розробник-початківець робить перші кроки в програмуванні, рано чи пізно йому запропонують створити аккаунт на сервісі GitHub. Це онлайн-сервіс для системи контролю версій (СКВ) під час розробки програмного забезпечення. Поговоримо про СКВ, сервіс GitHub і для чого він потрібен програмістам.
Що таке Git?
Гіт (Git) — це система контролю версій розробки ПЗ. Вигадав її Лінус Торвальд, творець ОС Linux. Йому вона знадобилася для того, щоб упорядкувати роботу програмістів з open-source кодом його операційної системи, але виявилося, що вона потрібна практично за будь-якої роботи з кодом.
Система контролю версій (СКВ) дозволяє послідовно зберігати всі зміни коду, які вносяться у процесі роботи. Якщо розробник стикається з проблемою після оновлення, він може без проблем відкотити код до робочої версії замість того, щоб годинами шукати помилку.
Крім того, і це головне завдання, за допомогою СКВ безліч програмістів можуть працювати над одним проектом. Контроль версій дозволяє відслідковувати, які зміни вносилися, ким і коли, а також відкочувати зміни у разі проблем.
Відповідно, Git — це розподілена СКВ, яка дозволяє розробникам спільно працювати над одним проектом та відстежувати зміни файлів. У Git безліч переваг: швидкість, простота використання, зрозумілий дизайн, підтримка нелінійної розробки (розгалуження) та ефективна робота з великими проектами. Крім того, Git — безкоштовний опенсорсний проект, що й допомогло йому зайняти на ринку провідну позицію.
Git практикує свій підхід до збереження даних. Інші СКВ відображають системні файли у вигляді списку змін, а Git робить знімки або снепшоти, і зберігає посилання на них.
Типи систем контролю версій
Існує три типи СКВ: локальна, централізована та розподілена.
Локальна система контролю версій
У локальній системі кожен розробник змінює свій комп’ютер. У процесі комміту система копіює файли зі змінами (патчі) та зберігає у новій директорії. Зміни до системи вносяться як набору патчів, готових до певної дати і часу. У разі неполадок набір патчів можна відкотити повністю або частково, щоб відновити попередню версію.
Централізована система контролю версій
У централізованій системі всі версії файлів утримуються на єдиному сервері. Клієнти звертаються до файлу на сервері, працюють із ним, а потім повертають назад на сервер.
Головна проблема централізованої системи — у разі проблем на сервері проект буде паралізований, можлива повна втрата всіх даних.
Розподілена система контролю версій
Розподілена система виправляє нестачу централізованої СКВ. Коли клієнт звертається до файлів на сервері, він копіює весь вміст репозиторію. Отже, у разі проблем на сервері бекап можна завантажити з будь-якої копії клієнта.
А ще за розподіленої системи клієнт може звертатися до кількох серверів. Саме так розробники можуть працювати над кількома проектами одночасно.
Тепер ви знаєте, що таке Git, як він використовується для контролю версій та які СВК існують. Перейдемо до того, як працює GitHub і для чого він потрібний.
Що таке GitHub
GitHub — це онлайн сервіс, який має всі функції системи Git. Якщо Git — це інструмент, репозиторій, який можна завантажити з вихідного сайту та використовувати локально на своєму комп’ютері, то GitHub — це конкретний ресурс, де можна створити або завантажити свій репозиторій та використовувати для спільної віддаленої роботи.
Після реєстрації на сервісі GitHub розробник може працювати над одним або декількома проектами, керувати змінами у вихідному коді, трекати баггі, налаштувати доступ до своїх проектів тощо.
Крім того, на GitHub є Wiki для кожного проекту (яку більшість програмістів лінується заповнювати, а дарма), система таск-менеджменту, інтеграція з популярними сервісами і навіть смайлики. Найбільше GitHub нагадує соціальну мережу для програмістів, хоча формально нею не являється.
Репозиторії
Репозиторії GitHub потрібні для зберігання файлів, папок та інших ресурсів, необхідних роботи над проектом. Кожен розробник може завантажити на GitHub репозиторій та керувати ним через інтерфейс командного рядка.
Багато репозиторіїв доступні всім користувачів ресурсу. Розробники стежать за роботою один одного та обмінюються списками популярних репозиторіїв, де можна знайти книги з програмування, фрагменти коду, списки сайтів, приклади проектів тощо.
Гілки
Гілки — це спеціальний інструмент для спільної роботи кількох програмістів. Уявіть код проекту у вигляді основної гілки, яка називається master. Ви хочете випробувати нову функцію і створюєте окрему гілку — це копія вашого проекту, в яку ви можете вносити зміни. Якщо новий функціонал вам подобається, його можна перенести до master-гілки. Для цього створюється push request, щоб колеги змогли оцінити нововведення та вирішити, чи потрібне воно у майстер-гілці.
Зміни файлів та коміти
При роботі з файлом на GitHub, незалежно від того, додаєте ви, редагуєте або видаляєте дані, у будь-якому випадку ви записуєте зміни. Після надсилання відповідної команди внесені зміни зберігаються. Але щоб додати внесені зміни до репозиторій СКВ, їх потрібно проіндексувати.
Пам’ятаєте, що ми згадували, що GitHub робить знімок поточного стану репозиторію? Індекс дозволяє підготувати такий знімок. Виберіть зміни, які бажаєте зберегти в репозиторії, додайте їх до індексу через команду git add, і тільки після цього запускайте коміт.
Підбиваючи підсумки: для чого ж потрібен GitHub
Онлайн-сервіс для системи контролю версій GitHub — чудовий робочий інструмент для розробника. Він дозволяє кільком розробникам займатися проектом одночасно, додавати новий функціонал в окремих гілках, обмінюватися файлами, вивчати чужі рішення тощо.
По суті, це різновид соціальної мережі, де можна ще й працювати. І хоча є стоїки, які принципово не користуються гітхабом, мати обліковий запис на цьому сервісі корисно будь-якому розробнику.
Messenger
Viber
Telegram
Skype
[email protected]
Перезвонить мне