Skip to main content

Як Git зберігає дані?

Git зберігає дані не як набір відмінностей (diff'ів), а як знімки (snapshots) стану проекту.

Ключова ідея

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

З чого складаються дані в Git

Git зберігає все у вигляді об'єктів:

  1. Blob - вміст файлу

Зберігає лише дані файлу, без імені та шляху.

  1. Tree - структура каталогів

Пов'язує імена файлів і папок з blob'ами та іншими tree.

  1. Commit - знімок проекту

Містить:

  • посилання на tree (стан файлів),
  • посилання на батьківські коміти,
  • автора, дату, повідомлення.
  1. Tag - іменоване посилання

Зазвичай вказує на конкретний коміт (наприклад, реліз).

Як Git економить місце

  • незмінені файли не копіюються;
  • використовується хешування (SHA-1 / SHA-256);
  • однаковий вміст -> один і той самий об'єкт.

Чому це важливо

  • швидкі операції (commit, checkout, branch);
  • цілісність даних (будь-яка зміна змінює хеш);
  • гілки - це просто вказівники на коміти, а не копії коду.

Коротко для співбесіди

Git зберігає дані як набір знімків проекту, використовуючи об'єкти (blob, tree, commit), а не як diff'и між версіями.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.