Оглядач об’єктів
Git має репутацію складного. Майже вся вона походить із того, що модель ніколи не показують: чотири види об’єктів і вказівники. Щойно ви зможете клацнути коміт, потрапити на його дерево і виявити, що ваш файл є блобом, якому ім’я дало дерево, порцеляна перестане бути магією.
⌘K → Оглядач об’єктів. Ніщо на цій сторінці не може змінити жодного
байта — кожен виклик за нею це читання.

Чотири об’єкти
| Об’єкт | Це | Знає |
|---|---|---|
| blob | Вміст файлу | Нічого. Ні свого імені, ні шляху, ні історії |
| tree | Перелік каталогу | Імена, режими і sha кожного дочірнього блоба чи дерева |
| commit | Один знімок | Своє дерево, своїх батьків, автора, комітера, повідомлення |
| tag | Анотований тег | Об’єкт, на який вказує, того, хто теґував, і повідомлення |
Найбільша несподіванка для більшості — перший рядок. У блоба немає імені. Два файли з однаковим вмістом будь-де у вашій історії — це той самий блоб, збережений один раз. Ім’я живе в дереві, яке на нього вказує — саме тому git відстежує вміст, а не файли, і саме тому перейменування виявляються, а не записуються.
Реф — refs/heads/main, refs/tags/v1.0, HEAD — це просто файл, що
містить sha. Ось і вся «дешевизна гілкування».
Прогулянка
Ліва колонка перелічує кожен реф у репозиторії, згрупований так, як групує їх git. Клацніть на будь-якому, щоб потрапити на об’єкт, який він називає.
Далі все є посиланням:
- Коміт показує своє
treeі кожногоparent— переходьте до знімка або назад по історії, по одному коміту за раз. - Дерево перелічує свої записи з режимом, типом, sha і розміром. Клацніть на імені, щоб відкрити дитину.
- Блоб показує свій текст (початок, якщо він великий) або прямо каже, що він бінарний.
- Анотований тег показує, на що він вказує — переходьте до коміта.
Назад повертає вас вашими ж кроками.
Введення ревізії
Поле приймає все, що приймає git rev-parse, і саме тут це перестає бути
браузером і стає способом вчитися:
| Введіть це | Щоб отримати |
|---|---|
HEAD |
Поточний коміт |
HEAD~3 |
Три коміти назад |
HEAD^{tree} |
Дерево того коміта, очищене |
HEAD:src/app.ts |
Блоб для того шляху, напряму |
v1.0^{} |
Те, на що вказує анотований тег, а не сам об’єкт тега |
a1b2c3d |
Будь-який об’єкт за sha — скорочення працюють |
Цифри режиму в переліку дерева варто знати: 100644 — файл, 100755 —
виконуваний, 040000 — піддерево, 120000 — символічне посилання, 160000 —
gitlink підмодуля; останнє і є всім, що зберігає підмодуль.
Обмеження, про які варто знати
- Лише читання, і це навмисно. Тут нема чим писати. Створення об’єктів
руками — це вправа з
git hash-object, і їй місце в терміналі. - Великі блоби обрізаються після перших 200 КБ — досить, щоб побачити, що це, і недосить, щоб підвісити вікно.
- Розміри — це розмір вмісту об’єкта, як його повідомляє
git cat-file -s, а не те, скільки він коштує на диску після пакування. Про це див. обслуговування. - Недосяжні об’єкти — теж об’єкти. Вставте sha зі звіту
git fsckпро висячі об’єкти, і він відкриється; часто це найшвидший спосіб побачити, що містив загублений коміт, перш ніж вирішувати, чи відновлювати його.
Дивіться також: Граф · Обслуговування репозиторію · Відновлення