← Повернутись до головної
🔀 Система контролю версій

Git — розподілена
система контролю версій

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

📅 Рік виходу: 2005
👤 Автор: Лінус Торвальдс
🌐 Ліцензія: GNU GPL v2
📊 Використання: 90%+ розробників
1

Системи контролю версій

💾

Що таке VCS?

Version Control System (VCS) — система управління версіями файлів. Дозволяє відстежувати зміни, повертатись до попередніх станів та координувати спільну роботу над проектом.

👤

Локальні VCS

Найпростіша форма — збереження копій файлів на локальному диску. Приклад: RCS. Мінус — неможливість командної роботи та ризик втрати даних.

🏠

Централізовані VCS

SVN, CVS — один центральний сервер зберігає всі версії. Команда підключається до нього. Мінус: єдина точка відмови, обмежена робота офлайн.

🌐

Розподілені VCS

Git, Mercurial — кожен учасник має повну копію репозиторію. Робота без інтернету, висока надійність, потужні можливості злиття гілок.

Сучасна розробка неможлива без VCS. Системи контролю версій вирішують три ключові проблеми: відстеження змін (хто, коли та що змінив), координація команди (синхронізація роботи кількох розробників), резервне копіювання (можливість відновити будь-який стан проекту).

2

Про Git

2005
Лінус Торвальдс (засновник Linux) створив Git для управління вихідним кодом ядра Linux після конфлікту з BitKeeper.
2008
Запущено GitHub — найбільший хостинг Git-репозиторіїв. Git стає стандартом у відкритому програмному забезпеченні.
2012
Git увійшов у топ-3 найпопулярніших VCS. Більшість великих проектів перейшли на Git.
2018
Microsoft придбала GitHub за $7.5 млрд. Git використовують понад 31 мільйон розробників.
2024
Git — беззаперечний лідер VCS. 94% компаній-розробників ПЗ використовують Git у своїх проектах.
3

Можливості та переваги Git

Швидкість
Більшість операцій виконуються локально без мережевих запитів — Git надзвичайно швидкий навіть у великих репозиторіях.
🔄
Розподіленість
Кожен клон — це повна копія репозиторію з усією історією. Можна працювати повністю офлайн.
🌿
Гілки (Branching)
Легке та швидке створення гілок. Можна розробляти нові функції ізольовано та зливати їх у головну гілку.
🔒
Цілісність даних
Кожен об'єкт у Git перевіряється SHA-1 хешем. Неможливо змінити дані непомітно — гарантія цілісності.
👥
Командна робота
Pull Requests, Code Review, Merge Requests — Git забезпечує повний workflow для командної розробки.
📚
Повна історія
Зберігається вся історія змін: хто, коли і що змінив. Можна повернутись до будь-якого стану проекту.
🏠
Хостинг платформи
GitHub, GitLab, Bitbucket — розвинена екосистема для хостингу, CI/CD та управління проектами.
🛡
Відкритий код
Git — безкоштовний та відкритий. Не залежить від жодного вендора. Стандарт індустрії з 2005 року.
4

10 базових команд Git

Створює новий Git-репозиторій у поточному каталозі. Команда генерує прихований каталог .git, де зберігаються всі метадані та об'єктна база даних репозиторію.

# Ініціалізувати репозиторій у поточному каталозі
git init

# Ініціалізувати у конкретному каталозі
git init my-project

# Вивід: Initialized empty Git repository in /path/.git/

Копіює існуючий репозиторій (локальний або віддалений) разом з усією історією змін. Автоматично налаштовує з'єднання з оригінальним репозиторієм як origin.

# Клонувати з GitHub
git clone https://github.com/user/repo.git

# Клонувати у конкретну папку
git clone https://github.com/user/repo.git my-folder

# Клонувати лише останній комміт (швидко)
git clone --depth 1 https://github.com/user/repo.git

Переносить зміни файлів до проміжної зони (staging area / index). Лише файли у staging area потраплять до наступного комміту. Дозволяє точно контролювати, що буде збережено.

# Додати конкретний файл
git add index.html

# Додати всі файли у поточному каталозі
git add .

# Додати всі файли певного типу
git add *.css

# Інтерактивне додавання (вибір частин файлу)
git add -p script.js

Фіксує зміни з проміжної зони у локальному репозиторії. Кожен комміт має унікальний SHA-1 хеш та містить: автора, дату, повідомлення та знімок стану файлів.

# Комміт з повідомленням
git commit -m "Додано навігаційне меню"

# Додати всі змінені файли та зробити комміт
git commit -am "Виправлено стилі кнопок"

# Змінити останній комміт
git commit --amend -m "Виправлене повідомлення"

Показує поточний стан робочого каталогу: які файли змінені, які додані до staging area, а які не відстежуються. Найуживаніша команда для щоденної роботи.

git status

On branch main
Changes to be committed:
  modified:   index.html

Changes not staged for commit:
  modified:   style.css

Untracked files:
  script.js

# Короткий формат
git status -s

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

# Детальна історія
git log

# Короткий однорядковий формат
git log --oneline

# Графічне дерево гілок
git log --oneline --graph --all

# Останні 5 комітів
git log -5

Команда для роботи з гілками: перегляд, створення та видалення. Гілки дозволяють розробляти нові функції ізольовано від основного коду.

# Переглянути всі гілки
git branch

# Створити нову гілку
git branch feature/login-page

# Видалити гілку
git branch -d feature/login-page

# Переглянути всі гілки (включно з віддаленими)
git branch -a

Переключається між гілками або відновлює файли з попередніх комітів. У новіших версіях Git для цього рекомендується використовувати git switch.

# Переключитись на гілку
git checkout develop

# Створити та одразу переключитись
git checkout -b feature/auth

# Сучасний спосіб (Git 2.23+)
git switch main
git switch -c new-feature

git pull завантажує зміни з віддаленого репозиторію та зливає їх з поточною гілкою. git push відправляє локальні коміти на сервер.

# Завантажити та злити зміни
git pull origin main

# Тільки завантажити (без злиття)
git fetch origin

# Відправити на сервер
git push origin main

# Відправити нову гілку
git push -u origin feature/auth

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

# Злити гілку feature в main
git checkout main
git merge feature/auth

# Злиття без Fast-forward (зберігає історію)
git merge --no-ff feature/auth

# Скасувати незавершене злиття
git merge --abort
5

Сертифікат курсу

📜
Місце для сертифіката

Тут буде розміщено сертифікат про проходження курсу

6

Джерела інформації