Робоче дерево
Робоче дерево (англ. 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 ..gitignoregit checkoutgit configgit taggit worktree