Ключові поняття

Робоче дерево

Робоче дерево (англ. working tree; також відоме як робоча директорія, англ. working directory, або робоча копія, англ. working copy) — це файли й директорії твого проєкту, які можна редагувати, видаляти та впорядковувати на комп'ютері. Саме в робочому дереві ти вносиш зміни у файли, перш ніж закомітити їх у своєму репозиторії.

Приклад

Скажімо, ти працюєш над вебзастосунком. Проєкт під контролем версій із Git, і у файловому менеджері він має приблизно такий вигляд:

project-root/
  ├── .git/
  ├── src/
  │   ├── components/
  │   │   ├── header.js
  │   │   └── footer.js
  │   ├── utils/
  │   │   └── helpers.js
  │   └── main.js
  ├── index.html
  ├── styles.css
  ├── app.js
  └── config.json

П: Чому це називається робочим деревом, якщо воно зовсім не схоже на дерево?

В: По-перше, воно догори дриґом. По-друге, це метафора! Дерево означає ієрархічну структуру файлів і директорій проєкту. Як у дерева є гілки й листя, так у проєкту є директорії (гілки) і файли (листя).

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

Решта файлів і директорій (як-от src/, index.html, styles.css тощо) і складають робоче дерево. Ці файли можна редагувати, додавати нові чи видаляти наявні. Саме за змінами в цих файлах стежить Git.

Як це працює

Git відстежує різницю між файлами в робочому дереві та останнім комітом у поточній гілці. Завдяки цьому можна вільно редагувати, додавати й видаляти файли в робочому дереві, не впливаючи одразу на історію комітів репозиторію. Коли зміни готові, додай їх до області підготовки (командою на кшталт git add) і створи новий коміт — так в історії проєкту збережеться знімок стану.

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

Робоче дерево важливе з кількох причин:

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

Пов'язані команди

Перевірити стан робочого дерева:

git status

Переглянути різницю між робочим деревом і останнім комітом:

git diff

Скасувати зміни у файлі в робочому дереві:

git restore path/to/file.txt

Додати всі зміни в поточній директорії (.) до області підготовки:

git add .