Staging area
- Sinônimo: index (o nome mais técnico da estrutura de dados que, por baixo dos panos, implementa a staging area no Git)
A staging area é um dos mecanismos internos do Git que permite escolher alterações específicas nos arquivos do projeto para armazenar de forma permanente como parte do próximo commit (pense em um snapshot/checkpoint) no seu repositório Git.
Pergunta: Por que escolher alterações específicas? Por que não simplesmente salvar tudo?
Resposta: Você também pode fazer isso, claro. Mas, no trabalho real, é comum acabar fazendo alterações sem relação entre si, mesmo quando o plano era outro.
Por exemplo, enquanto trabalha em uma nova funcionalidade, você pode topar por acaso com um erro de digitação no nome de uma variável do código existente ou atualizar uma documentação que estava incompleta. Essas alterações não têm relação com a funcionalidade, e muitas vezes é melhor commitá-las separadamente. Assim, se precisar reverter a funcionalidade mais tarde, você não vai reverter sem querer a correção do erro de digitação nem a atualização da documentação.
A staging area do Git permite:
-
Selecionar alterações para incluir no próximo commit, adicionando à staging area apenas os arquivos ou trechos de arquivos desejados. Isso permite criar commits focados e significativos, que tratam de tarefas ou funcionalidades específicas.
-
Revisar as alterações na staging area antes de commitá-las em definitivo, para garantir que estão corretas e completas. Isso ajuda a flagrar modificações ou adições acidentais antes que elas entrem para o histórico do repositório.
-
Trabalhar de forma incremental: termine uma parte, adicione as alterações à staging area; continue trabalhando em outras partes e adicione mais alterações depois. Essa flexibilidade permite montar aos poucos um conjunto de alterações estável e autocontido.
-
Separar o trabalho em andamento do que já está pronto. Se você estragou algo, sempre pode descartar e desfazer as alterações fora do stage sem tocar nas que já estão no stage.
Exemplos
Veja o status da staging area e do seu espaço de trabalho:
git statusAdicione um único arquivo à staging area:
git add myfile.txtAdicione todas as alterações de um diretório à staging area:
git add src/O caractere . abaixo aponta para o diretório atual, ou seja, "todas as alterações no diretório atual". Quando executado a partir da raiz do repositório, esse comando adiciona ao stage todas as alterações do repositório inteiro:
git add .Commite as alterações que estão no stage no histórico do seu repositório com uma mensagem:
git commit -m "Add feature XYZ or fix bug ABC"Remova todas as alterações da staging area (sem desfazer as alterações em si):
git restore --staged .O caractere . aparece de novo aqui; ele significa "remover da staging area todas as alterações do diretório atual".
Você também pode indicar um arquivo ou diretório específico:
git restore --staged path/to/file.txt.gitignoregit checkoutgit configgit taggit worktree