Про контроль версій (Git)

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

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

../_images/vcs-dvcs.svg

Розподілена схема управління версіями

Що таке Git?

Основна відмінність між Git’ом та будь-якою іншою VCS полягає в тому, як Git’ом мислить про свої дані. Концептуально, більшість інших систем зберігають інформацію у вигляді списку змін у файлах. Git не думає про свої дані і не зберігає їх таким чином. Натомість, Git думає про свої дані як про серію знімків мініатюрної файлової системи.

Це важлива відмінність між Git’ом та майже всіма іншими VCS. Вона змушує Git’а переосмислити майже кожен аспект контролю версій, який більшість інших систем скопіювали з попереднього покоління. Це робить Git більше схожим на міні-файлову систему з деякими неймовірно потужними інструментами, побудованими поверх неї, ніж на звичайну VCS.

../_images/git-snapshots.svg

Зберігання даних у вигляді знімків проекту з плином часу

Локальні операції

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

Цілісність

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

Стани файлів сховища

Git має три основні стани, в яких можуть перебувати ваші файли: модифіковані, на стадії розробки та зафіксовані:

  • Змінено означає, що ви змінили файл, але ще не зафіксували його у вашій базі даних.

  • Поетапний означає, що ви позначили змінений файл у його поточній версії, щоб він потрапив до наступного знімка фіксації.

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

sequenceDiagram participant Working directory participant Stage area participant .git directory (Repository) .git directory (Repository) ->> Working directory: Checkout Working directory ->> Stage area: Stage fixes Stage area ->> .git directory (Repository): Commit

Базовий робочий процес Git’а виглядає приблизно так:

  1. Ви змінюєте файли у вашому робочому дереві.

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

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

Командний рядок

Існує багато різних способів використання Git’у. Існують оригінальні інструменти командного рядка, а також багато графічних інтерфейсів користувача з різними можливостями. З одного боку, командний рядок є єдиним місцем, де ви можете виконувати всі команди Git’а - більшість графічних інтерфейсів реалізують лише часткову підмножину функціональності Git’а для спрощення. Якщо ви знаєте, як запустити версію з командного рядка, ви, ймовірно, також зможете з’ясувати, як запустити версію з графічним інтерфейсом, хоча зворотне не обов’язково вірно. Крім того, хоча ваш вибір графічного клієнта є справою особистого смаку, всі користувачі матимуть встановлені та доступні інструменти командного рядка.