Рабочее дерево
- На английском: 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Вопрос: почему это называется рабочим деревом (tree), если оно совсем не похоже на дерево?
Ответ: во‑первых, оно перевёрнуто. Во‑вторых, это метафора! Дерево описывает иерархическую структуру файлов и директорий в проекте. Как у дерева есть ветви и листья, так и у проекта есть директории (ветви) и файлы (листья).
Директория .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