Advertisement
  1. Code
  2. Git

O Que São as Três Árvores no Git?

by
Difficulty:BeginnerLength:ShortLanguages:

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Git tornou-se o sistema de versionamento de controle e compartilhamento código mais usado do mundo. Se quisermos criar software de código aberto ou trabalhar em uma equipe profissional, entender Git é obrigatório.

Numa série de cursos sobre Git na Envato Tuts+, explicamos alguns dos conceitos base, todos com ilustrações úteis.

Nesse vídeo, aprenderemos as três árvores: a HEAD, índice e diretório de trabalho. Assista a explicação da função de cada uma e como interagem ao atualizar e submeter código.

Básico do Git: As Três Árvores

O Que São as Três Árvores?

Para entender melhor como o Git funcionar, podemos usar a metáfora das três árvores. Elas são três coleções diferentes de arquivos.

Para o fluxo de adicionar e buscar submissões, Git usa três versões diferentes de arquivos:

  1. o diretório de trabalho
  2. o índice
  3. algo chamado "HEAD" para criar e buscar submissões
The Three Trees

Cada uma das árvores tem um papel: uma de escrever as mudanças, uma para prepará-las e uma apontando para a última submissão em uma ramificação em um repositório Git.

Versões Diferentes de Arquivos

Arquivos cujos conteúdos podem ser alterados estão no diretório de trabalho. Arquivos no índice são preparados para serem empacotados em um objeto de submissão. Essas submissões são salvas no repositório Git.

Arquivos já submetidos são comprimidos. Cria-se resumos deles com SHA-1, uma função de resumo criptográfico. Ambas versões do arquivo no índice e submissão são salvas no repositório Git, que é um simples diretório .git dentro da pasta raiz do projeto.

O diretório de trabalho representa os arquivos atuais no sistema de arquivos do computador que estão disponíveis para o editor de código alterá-lo. O diretório de trabalho é uma versão de uma submissão em particular, uma captura particular do projeto que estamos vendo. É a versão da história do Git que HEAD aponta a qualquer momento.

"Checked out" quer dizer que descomprimimos arquivos do repositório Git e que, agora, estão disponíveis pra edição. O índice representa o que é rastreado. Também podemos dizer que é uma lista de arquivos relevantes para o repositório Git.

Checked out files in Git

O índice tem alguns nomes. Quando falamos de área de preparação (staging), arquivos preparados, cache ou pasta cache, estamos falando do índice. Podemos ver o índice como uma área de esboço para a próxima submissão, uma área temporária para prepará-la.

HEAD

HEAD é a parte do Git que aponta para as ramificações, como a ramificação master, por padrão. É uma referência e tem um trabalho simples, mas muito importante. HEAD aponta para a ramificação vista no momento que, por sua vez, aponta para a última submissão naquela ramificação. HEAD move-se não só no tempo (ao verificar submissões anteriores), mas também ao criar novas ramificações ou apenas mudar entre elas.

Também é o ponto na história do Git que será o pai da nossa próxima submissão. Cada nova submissão, ele altera a referência para a ramificação do momento—por padrão a master, claro.

Logo, HEAD é uma referência que muda constantemente e aponta para duas coisas: a ramificação em si e, através desta, para a última submissão nela presente.

Fluxo de Trabalho de Arquivos no Git

Vejamos de perto o fluxo de trabalho ao lidar com arquivos no Git. É essencial entender como todas as peças se encaixam. Facilitará muito mais o entendimento de conceitos mais avançados no Git, depois.

Eis um exemplo:

Nesse exemplo, temos duas submissões do arquivo. E podemos ver que as versões no repositório, do índice e diretório de trabalho são a mesma. Como os arquivos já são rastreados, Git perceberá quaisquer mudanças ao alterarmos quaisquer desses arquivos no diretório de trabalho.

Ao executarmos git status, veremos uma lista de arquivos alterados, em vermelho. Isso indica que temos diferenças entre o diretório de trabalho—o código do nosso editor—e o índice, representando versões de arquivos de uma submissão em particular, geralmente, a última.

Agora, executamos git add para colocar as mudanças do diretório de trabalho no índice onde preparamos os arquivos. git status mostrará os arquivos adicionados ao índice na cor verde. Isso significa que as mudanças estão prontas para serem empacotadas numa nova submissão, a qual HEAD pode apontar e trabalhar.

Uma lista verde de arquivos significa que as versões preparadas no índice são diferentes das versões que foram enviadas previamente. Ao executar git commit, esses arquivos serão colocados num novo objeto de submissão. O comando git commit salvará os nomes dos arquivos, o conteúdo de cada um, informação de autor, metadados e mais num novo objeto.

O objeto de submissão, que agora vive na pasta .git no repositório, será a nova referência que HEAD apontará. Ela aponta para a submissão anterior, sendo a ponta de um icebergue de certa forma. Após criar o objeto de submissão, voltamos ao início do ciclo.

A submissão que HEAD aponta no repositório combina, novamente, com as versões no índice e diretório de trabalho, que estão prontos para novas mudanças e submissões. Fim.

Assista Mais Cursos Sobre Git

Se achou útil, que tal ver outros cursos sobre Git?

Assista nossa Introdução ao Git e GitHub ou tente outros cursos de Parada para Café nesta série:

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.