Diretório de trabalho
- Em inglês: working tree (literalmente árvore de trabalho)
- Sinônimos: working directory (diretório de trabalho), working copy (cópia de trabalho)
O diretório de trabalho representa os arquivos e diretórios do seu projeto que você pode editar, excluir e organizar no seu computador. É no diretório de trabalho que você altera seus arquivos antes de decidir fazer o commit dessas alterações no seu repositório.
Exemplo
Digamos que você está trabalhando em um projeto de aplicação web. Seu projeto está sob controle de versão com o Git, e você vê algo assim no explorador de arquivos:
project-root/
├── .git/
├── src/
│ ├── components/
│ │ ├── header.js
│ │ └── footer.js
│ ├── utils/
│ │ └── helpers.js
│ └── main.js
├── index.html
├── styles.css
├── app.js
└── config.jsonPergunta: Por que em inglês isso se chama working tree (árvore de trabalho), se não parece nada com uma árvore?
Resposta: Primeiro, ela está de cabeça para baixo. Segundo, é uma metáfora! A árvore se refere à estrutura hierárquica de arquivos e diretórios do seu projeto. Assim como uma árvore tem galhos e folhas, seu projeto tem diretórios (os galhos) e arquivos (as folhas).
O diretório .git contém todos os metadados e o banco de dados de objetos do repositório Git. Ele fica oculto na visualização normal dos arquivos do projeto porque a ideia é que você não interaja com ele diretamente. No entanto, quando você trabalha no terminal, muitas vezes pode ver esse diretório listado.
O restante dos arquivos e diretórios (como src/, index.html, styles.css etc.) forma o seu diretório de trabalho. Você pode editar esses arquivos, adicionar novos ou excluir os existentes conforme a necessidade. São esses os arquivos que o Git rastreia em busca de alterações.
Como funciona
O Git acompanha as diferenças entre os arquivos do seu diretório de trabalho e o último commit da sua branch atual. Isso permite editar, adicionar e excluir arquivos livremente no diretório de trabalho sem afetar imediatamente o histórico de commits do repositório. Quando as alterações estiverem do jeito que você quer, você pode adicioná-las à staging area (com um comando como git add) e então criar um novo commit, preservando um snapshot no histórico do projeto.
Quando você faz checkout de uma branch ou de um commit específico, os arquivos do seu diretório de trabalho são atualizados para corresponder ao estado do repositório naquele ponto. Você pode então fazer alterações nesses arquivos, como adicionar novas funcionalidades, corrigir bugs ou fazer melhorias na base de código.
O diretório de trabalho é importante porque:
- Ele dá a você uma visão tangível e editável do projeto no estado atual ou em qualquer branch em que você tenha feito checkout.
- Ele permite que você trabalhe nos arquivos do projeto e teste as alterações antes de decidir criar um novo commit.
- Ele deixa você ver de imediato, no seu sistema de arquivos, os efeitos de trocar de branch ou de puxar alterações de um repositório remoto.
Comandos relacionados
Verifique o status do diretório de trabalho:
git statusVerifique as diferenças entre o diretório de trabalho e o último commit:
git diffDescarte as alterações de um arquivo dentro do diretório de trabalho:
git restore path/to/file.txtAdicione todas as alterações do diretório atual (.) à staging area:
git add ..gitignoregit checkoutgit configgit taggit worktree