Como Verificar se um Repositório Git Possui Alterações Preparadas

GitBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um repositório Git possui alterações preparadas (staged changes). Você usará o comando git status para visualizar os arquivos preparados e entender sua saída, que indica o estado atual do seu repositório, incluindo arquivos modificados, preparados e não rastreados.

Além disso, você explorará como usar git diff --cached para examinar as alterações específicas que estão atualmente na área de preparação (staging area), permitindo que você verifique as diferenças entre as alterações preparadas e não preparadas dentro do seu repositório.

Use git status para Visualizar Arquivos Preparados

Nesta etapa, usaremos o comando git status novamente para ver como o Git rastreia as alterações depois que adicionamos um arquivo.

Primeiro, certifique-se de estar no seu diretório my-time-machine. Caso contrário, use o comando cd:

cd ~/project/my-time-machine

Agora, vamos criar um novo arquivo chamado notes.txt e adicionar algum conteúdo a ele:

echo "Ideas for the future" > notes.txt

Este comando cria o arquivo notes.txt com o texto especificado.

Em seguida, vamos dizer ao Git que queremos rastrear este novo arquivo. Usamos o comando git add para isso:

git add notes.txt

Este comando adiciona notes.txt à área de preparação (staging area). A área de preparação é como uma sala de espera para as alterações antes que elas sejam confirmadas (committed).

Agora, vamos verificar o status do nosso repositório usando git status:

git status

Você deve ver uma saída semelhante a esta:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   notes.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        message.txt

Observe que a saída agora mostra notes.txt em "Changes to be committed". Isso significa que o arquivo está na área de preparação, pronto para ser incluído no próximo commit.

Você também pode ver message.txt listado em "Untracked files". Isso ocorre porque ainda não confirmamos as alterações em message.txt das etapas anteriores. O Git está mostrando que ainda há alterações no diretório de trabalho (working directory) que não estão sendo rastreadas para o próximo commit.

Entender a saída de git status é crucial. Ele informa o estado atual do seu repositório, mostrando quais arquivos foram modificados, quais estão preparados para commit e quais não estão rastreados. Isso ajuda você a acompanhar seu trabalho e decidir o que incluir no seu próximo ponto de salvamento.

Verifique git diff --cached para Alterações

Nesta etapa, aprenderemos como ver as alterações exatas que estão atualmente na área de preparação usando o comando git diff --cached.

Lembre-se da etapa anterior que adicionamos notes.txt à área de preparação. Agora, vamos ver quais alterações o Git está pronto para confirmar (commit).

Certifique-se de estar no diretório ~/project/my-time-machine:

cd ~/project/my-time-machine

Agora, execute o seguinte comando:

git diff --cached

Você deve ver uma saída semelhante a esta:

diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1 @@
+Ideas for the future

Esta saída mostra a diferença entre a área de preparação e o último commit. Como esta é a primeira vez que estamos preparando notes.txt, o Git mostra-o como um novo arquivo.

Vamos detalhar a saída:

  • diff --git a/notes.txt b/notes.txt: Esta linha indica que estamos comparando duas versões do arquivo notes.txt.
  • new file mode 100644: Isso mostra que notes.txt é um novo arquivo.
  • index 0000000..a1b2c3d: Estes são identificadores internos do Git para o conteúdo do arquivo.
  • --- /dev/null: Isso representa o estado "vazio" antes que o arquivo fosse adicionado.
  • +++ b/notes.txt: Isso representa o estado atual do arquivo na área de preparação.
  • @@ -0,0 +1 @@: Este é um cabeçalho indicando as linhas que foram alteradas. -0,0 significa que nenhuma linha estava presente no estado original (vazio), e +1 significa que uma linha foi adicionada no novo estado.
  • +Ideas for the future: O sinal de mais + indica que esta linha foi adicionada.

O comando git diff --cached é incrivelmente útil para revisar suas alterações preparadas antes de confirmá-las. Ele permite que você verifique exatamente o que está prestes a salvar no histórico do seu projeto. Isso ajuda a evitar a confirmação acidental de alterações indesejadas.

Pressione q para sair da visualização de diff e retornar à linha de comando.

Verificar Alterações Preparadas vs. Não Preparadas (Staged vs. Unstaged)

Nesta etapa, exploraremos ainda mais a diferença entre as alterações preparadas (staged) e não preparadas (unstaged) modificando um arquivo que já está sendo rastreado pelo Git.

Primeiro, certifique-se de estar no diretório ~/project/my-time-machine:

cd ~/project/my-time-machine

Agora, vamos adicionar outra linha ao nosso arquivo notes.txt. Podemos usar o comando echo com >> para anexar texto a um arquivo existente:

echo "Another idea" >> notes.txt

Este comando adiciona a linha "Another idea" ao final de notes.txt.

Vamos verificar o status do nosso repositório novamente:

git status

Você deve ver uma saída semelhante a esta:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   notes.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   notes.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        message.txt

Observe que notes.txt agora aparece em duas seções:

  1. Changes to be committed (Alterações a serem confirmadas): Isso se refere à versão de notes.txt que adicionamos à área de preparação na etapa anterior (que continha apenas "Ideas for the future").
  2. Changes not staged for commit (Alterações não preparadas para commit): Isso se refere às alterações que acabamos de fazer em notes.txt (adicionando "Another idea"). Essas alterações estão em nosso diretório de trabalho (working directory), mas ainda não foram adicionadas à área de preparação.

Este é um conceito-chave no Git: a área de preparação contém um snapshot das alterações que estão prontas para o próximo commit, enquanto o diretório de trabalho contém o estado atual de seus arquivos, incluindo alterações que ainda não foram preparadas.

Para ver a diferença entre o diretório de trabalho e a área de preparação, você pode usar o comando git diff sem nenhuma opção:

git diff

Isso mostrará as alterações que não estão preparadas. Você deve ver a saída mostrando a linha "Another idea" sendo adicionada.

Para ver a diferença entre a área de preparação e o último commit (que vimos na etapa anterior), você usa git diff --cached.

Entender a diferença entre as alterações preparadas e não preparadas, e como visualizá-las com git status e git diff, é fundamental para usar o Git de forma eficaz. Isso oferece controle preciso sobre o que entra em cada commit.

Resumo

Neste laboratório, aprendemos como verificar se um repositório Git possui alterações preparadas (staged). Começamos usando o comando git status para visualizar o estado atual do repositório, incluindo arquivos que foram adicionados à área de preparação. Vimos como git status indica claramente quais arquivos são "Changes to be committed (Alterações a serem confirmadas)".

Em seguida, exploramos o comando git diff --cached para visualizar especificamente as diferenças entre as alterações preparadas e o último commit. Isso nos permitiu ver as modificações exatas de conteúdo que estão prontas para serem confirmadas. Finalmente, reforçamos a distinção entre alterações preparadas e não preparadas, entendendo que git status fornece uma visão geral, enquanto git diff --cached mostra o conteúdo detalhado das alterações preparadas.