Структура Git-репозиторію
Освоїти структуру Git-репозиторію на VPS AlexHost
Навіщо використовувати Git на AlexHost? Git є наріжним каменем контролю версій, і розміщення ваших репозиторіїв на VPS AlexHost дає вам повний контроль з root-доступом, надшвидким NVMe-сховищем і захищеним від DDoS середовищем. Незалежно від того, чи є ви самостійним розробником, чи керуєте командою, гнучкий VPS від AlexHost забезпечить безперебійну роботу вашого Git-репозиторію. У цьому посібнику ви дізнаєтеся про структуру репозиторію Git і про те, як використовувати його на вашому сервері AlexHost.
1. Робочий каталог
Робочий каталог – це місце, де знаходяться фактичні файли вашого проекту. Коли ви клонуєте Git-репозиторій, ви отримуєте копію всіх відстежуваних файлів, які розміщені у вашому робочому каталозі. Це область, де ви активно редагуєте файли, вносите зміни і додаєте новий вміст
- Змінені файли: Будь-який файл, який ви редагуєте у вашому робочому каталозі, буде вважатися зміненим, доки ви не відредагуєте його або не скинете зміни.
- Невідстежувані файли: Файли, які ще не відстежуються Git’ом, відображатимуться у робочому каталозі як невідстежувані, доки їх не буде поставлено на стадію та зафіксовано.
2. Зона накопичення (індекс)
Область накопичення (також звана індексом) – це проміжне місце, де збираються зміни до файлів перед тим, як їх буде зафіксовано у сховищі. Ви додаєте файли або зміни до проміжного сховища за допомогою команди git add. Зміни в області накопичення стануть частиною наступного коміту
- Додавання змін до області очікуванняgit add <файл
- Перегляньте область накопичення: Ви можете побачити, що знаходиться у проміжку очікування за допомогою git-статусу.
3. Каталог Git (тека .git)
Каталог Git, що зберігається у теці .git, є серцем будь-якого сховища Git. Він містить усю важливу інформацію про історію, конфігурацію та поточний стан вашого проекту. Цей каталог автоматично створюється під час ініціалізації або клонування Git-сховища
Основні компоненти каталогу .git:
- HEAD: Файл, який вказує на поточну фіксацію у вашій гілці.
- Гілки: Містить інформацію про гілки у сховищі.
- Об’єкти: Зберігає всі об’єкти, такі як коміти, блоки (файлові дані) і дерева (структура каталогів).
- Посилання: Містить посилання на коміти, включаючи заголовки (гілки), теги та гілки віддаленого відстеження.
- Конфігурація: Файл конфігурації вашого локального сховища, де зберігаються такі параметри, як віддалене відстеження або інформація про користувача.
- Журнали: Зберігає журнали для всіх дій, таких як комміти, вилучення та відновлення баз.
- Хуки: Користувацькі скрипти, які можуть запускати дії до або після певних подій Git’а (наприклад, комміту, пушу).
4. Історія коммітів
Кожен комміт – це знімок вашого сховища в певний момент часу. Комміт містить зміни у файлах разом з метаданими, такими як повідомлення про комміт, автор та мітка часу. Комміти формують історію вашого проекту
- Комміти зберігаються у каталозі .git/objects.
- Кожен комміт вказує на попередній (крім першого), утворюючи зв’язаний ланцюжок, який можна візуалізувати як історію проекту.
5. Гілки
Гілка – це вказівник на конкретний коміт, що дозволяє вам працювати над різними версіями вашого проекту одночасно. За замовчуванням Git починається з гілки, яка називається main (або master у старих версіях)
- Покажчик гілки: Гілки – це просто вказівники на комміти. Створення нової гілки означає створення вказівника на поточну фіксацію, що дозволяє вам робити нові фіксації у цій гілці, не впливаючи на інші гілки.
- HEAD: Покажчик HEAD у Git’і вказує на поточну гілку або комміт, над яким ви працюєте. Зазвичай він вказує на останній комміт у поточній гілці.
6. Мітки
Мітки – це посилання на певні моменти в історії вашого Git’а, які часто використовуються для позначення версій релізів (наприклад, v1.0, v2.0). На відміну від гілок, мітки не оновлюються з новими комітами
- Полегшені мітки: Це прості вказівники на комміти, подібні до гілки.
- Анотовані мітки: Містять додаткові метадані, такі як ім’я тегувальника, дата і повідомлення тегу.
7. Пульти доступу
Віддалений репозиторій у Git’і – це посилання на копію вашого сховища, розміщену деінде, часто на таких платформах, як GitHub, GitLab або Bitbucket. Віддалені копії використовуються для спільної роботи, дозволяючи вам вносити зміни до інших копій сховища або витягувати зміни з них
- Origin: За замовчуванням основне віддалене сховище називається origin.
8. Об’єкти в Git’і
Каталог об’єктів Git’а (.git/objects) містить чотири основні типи об’єктів, які складають історію сховища
- Згусток: Зберігає фактичний вміст файлу.
- Дерево: Представляє собою каталог, що відображає імена файлів на об’єкти блобу та підкаталоги (інші об’єкти дерева).
- Фіксація: Зберігає метадані про кожну зміну (автор, дата, повідомлення) і вказує на об’єкт дерева.
- Мітка: Вказує на коміт і зберігає інформацію про тегер і повідомлення (у випадку анотованих тегів).
9. Хуки
Git дозволяє вам визначати користувацькі скрипти (хуки), які можуть спрацьовувати на різних етапах робочого процесу Git’а. Ці скрипти можуть запускатися автоматично після або перед такими подіями, як коммітування, штовхання або злиття. Хуки можуть контролювати якість коду, запускати тести або запускати конвеєри CI/CD. Хуки зберігаються в каталозі .git/hooks/
- Хук перед коммітом: Запускається перед створенням коміту.
- Пост-фіксований хук: Запускається після створення коміту.
10. Журнали
Git зберігає логи всіх дій у сховищі, таких як комміти, вилучення, злиття та повернення. Ці логи допомагають у налагодженні та перегляді дій, виконаних у сховищі
- Git Reflog: Зберігає запис всіх змін вказівника HEAD, дозволяючи вам відновитися після таких дій, як скидання гілки.
Короткий огляд структури сховища Git’а
- Робочий каталог: Містить файли та каталоги у їх поточному стані.
- Область стадії (індекс): Місце, де зміни зберігаються перед фіксацією.
- Каталог Git (.git): Містить основні дані, включаючи об’єкти, конфігурацію та журнали.
- Комміти: Запис змін з метаданими, що формують історію проекту.
- Гілки: Вказівники на конкретні коміти, які дозволяють паралельну розробку.
- Теги: Іменовані посилання на конкретні комміти, зазвичай для позначення релізів.
- Сховища: Посилання на сховища, розміщені деінде, для спільної роботи.
- Об’єкти: Основні компоненти Git’а, включаючи блоки, дерева та коміти.
Розуміючи цю структуру, ви зможете ефективно орієнтуватися у вашому сховищі Git’а та керувати ним, забезпечуючи безперешкодну співпрацю та контроль версій протягом усього процесу розробки проекту.