Como Verificar se um Repositório Git Possui Arquivos Não Rastreáveis

GitBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como identificar arquivos não rastreados dentro de um repositório Git. Compreender os arquivos não rastreados é crucial para gerenciar o estado do seu projeto e garantir que apenas os arquivos relevantes sejam incluídos no controle de versão.

Começaremos usando o comando fundamental git status para listar arquivos não rastreados e entender sua saída. Em seguida, exploraremos o comando git ls-files --others, que fornece uma maneira mais direta de listar arquivos não rastreados. Por fim, abordaremos brevemente como considerar arquivos ignorados nesse processo.

Executar git status para Listar Arquivos Não Rastreáveis

Nesta etapa, aprenderemos como usar o comando git status para ver quais arquivos em nosso diretório de projeto não estão sendo rastreados pelo Git. Este é um comando fundamental para entender o estado do seu repositório.

Primeiro, certifique-se de estar no seu diretório de projeto. Se você seguiu o laboratório anterior, deve estar no diretório ~/project/my-time-machine. Você pode verificar seu diretório atual usando o comando pwd:

pwd

A saída deve ser semelhante a:

/home/labex/project/my-time-machine

Agora, vamos criar um novo arquivo neste diretório. Vamos chamá-lo de notes.txt:

echo "Some random notes" > notes.txt

Este comando cria um arquivo chamado notes.txt e escreve o texto "Some random notes" nele.

Agora, vamos executar git status para ver como o Git vê este novo arquivo:

git status

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

On branch master
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:   message.txt

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

no changes added to commit (use "git add" and/or "git commit -a")

Observe a seção "Untracked files:". O Git nos diz que notes.txt é um arquivo não rastreado. Isso significa que o Git vê o arquivo, mas não está gerenciando suas versões no momento. O Git não incluirá este arquivo em commits, a menos que você diga explicitamente para fazê-lo.

Compreender os arquivos não rastreados é importante porque ajuda a manter seu repositório limpo e a rastrear apenas os arquivos que fazem parte do seu projeto. Arquivos temporários, artefatos de compilação ou anotações pessoais são frequentemente deixados não rastreados.

Usar git ls-files --others para Verificação

Na etapa anterior, usamos git status para ver arquivos não rastreados. Embora git status forneça uma boa visão geral do estado do repositório, às vezes você pode querer uma lista mais simples apenas dos arquivos não rastreados. É aqui que git ls-files --others é útil.

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

Agora, execute o seguinte comando:

git ls-files --others

Você deve ver a seguinte saída:

notes.txt

Este comando lista todos os arquivos em seu diretório de trabalho que não são rastreados pelo Git. É uma maneira mais direta de ver apenas os arquivos não rastreados em comparação com a saída detalhada de git status.

A opção --others informa ao git ls-files para listar apenas os arquivos que não fazem parte do índice Git (ou seja, não rastreados). Isso é útil para scripting ou quando você só precisa de uma lista rápida do que é novo e não rastreado em seu projeto.

Você pode se perguntar por que usaria git ls-files --others em vez de git status. Embora git status forneça uma visão abrangente, incluindo arquivos modificados e staged (preparados), git ls-files --others é projetado especificamente para listar apenas arquivos não rastreados. Isso pode ser muito útil quando você deseja processar ou gerenciar arquivos não rastreados programaticamente, por exemplo, em um script que limpa arquivos temporários.

Combinar com Verificação de Arquivos Ignorados

Nas etapas anteriores, aprendemos como identificar arquivos não rastreados usando git status e git ls-files --others. No entanto, às vezes você tem arquivos que você intencionalmente não quer que o Git rastreie, como arquivos temporários, saídas de compilação ou arquivos de configuração contendo informações confidenciais. O Git permite que você especifique esses arquivos em um arquivo .gitignore.

Nesta etapa, criaremos um arquivo .gitignore e veremos como ele afeta a saída de git status e git ls-files --others.

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

Agora, vamos criar um arquivo que queremos ignorar. Vamos chamá-lo de temp.log:

echo "This is a temporary log file" > temp.log

Execute git status novamente:

git status

Você deve ver notes.txt e temp.log listados como arquivos não rastreados:

On branch master
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:   message.txt

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

no changes added to commit (use "git add" and/or "git commit -a")

Agora, vamos criar um arquivo .gitignore e adicionar temp.log a ele. Use o editor nano para criar e editar o arquivo:

nano .gitignore

Dentro do editor nano, digite a seguinte linha:

temp.log

Pressione Ctrl + X, depois Y para salvar e Enter para confirmar o nome do arquivo.

Agora, execute git status mais uma vez:

git status

Desta vez, temp.log não deve mais aparecer na lista "Untracked files:":

On branch master
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:   message.txt

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

no changes added to commit (use "git add" and/or "git commit -a")

O Git agora sabe para ignorar temp.log. Vamos também ver como git ls-files --others é afetado:

git ls-files --others

A saída agora deve mostrar apenas notes.txt:

notes.txt

Por padrão, git ls-files --others não lista arquivos ignorados. Este é geralmente o comportamento desejado, pois você normalmente não quer ver arquivos que você explicitamente disse ao Git para ignorar.

Se você quiser ver arquivos ignorados junto com outros arquivos não rastreados, você pode usar a opção --ignored com git ls-files --others:

git ls-files --others --ignored

A saída agora incluirá arquivos não rastreados e ignorados:

.gitignore
notes.txt
temp.log

Observe que .gitignore em si é um arquivo não rastreado até que você o adicione e faça o commit.

Compreender como usar .gitignore é crucial para manter seu repositório limpo e focado nos arquivos reais do projeto. Ele impede commits acidentais de arquivos que não deveriam estar no controle de versão.

Resumo

Neste laboratório, aprendemos como identificar arquivos não rastreados em um repositório Git. Começamos usando o comando fundamental git status, que fornece uma visão geral abrangente do estado do repositório, incluindo uma seção dedicada a arquivos não rastreados. Este comando é essencial para entender quais arquivos o Git não está gerenciando atualmente.

Em seguida, exploramos o comando git ls-files --others como um método alternativo para listar arquivos não rastreados. Este comando oferece uma saída mais simples, listando apenas os próprios arquivos não rastreados. Embora o conteúdo completo da terceira etapa não seja fornecido, o título sugere que envolveria a combinação desta verificação com a consideração de arquivos ignorados, que são arquivos intencionalmente excluídos do rastreamento do Git por meio de um arquivo .gitignore.