Introdução
Neste laboratório, você aprenderá como verificar se um arquivo foi adicionado em um commit específico do Git. Você explorará diferentes comandos Git para inspecionar os detalhes do commit e identificar arquivos recém-adicionados.
Você começará usando git show --name-status para visualizar um resumo conciso das alterações em um commit, procurando especificamente o status 'A' que indica um arquivo adicionado. Em seguida, você aprenderá como usar git diff-tree com opções relevantes para obter um resultado semelhante, o que é particularmente útil para scripting e cenários avançados. Finalmente, você diferenciará entre arquivos modificados e adicionados dentro do histórico de commits.
Executar git show --name-status
Nesta etapa, exploraremos como visualizar os detalhes de um commit específico, incluindo quais arquivos foram alterados e como. Usaremos o comando git show com a opção --name-status.
Primeiro, certifique-se de estar no seu diretório my-time-machine:
cd ~/project/my-time-machine
Agora, vamos usar git show para analisar o commit que fizemos no laboratório anterior. Podemos usar o alias HEAD para nos referir ao commit mais recente:
git show --name-status HEAD
Você deve ver uma saída semelhante a esta:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:00:00 2023 +0000
Send a message to the future
A message.txt
Vamos analisar esta saída:
- A primeira parte mostra os detalhes do commit, semelhante ao que você viu com
git log. - A linha
A message.txté a parte importante aqui.Asignifica "Adicionado" (Added). Isso nos diz que o arquivomessage.txtfoi adicionado neste commit.message.txté o nome do arquivo que foi afetado.
A opção --name-status é muito útil porque fornece um resumo conciso das alterações introduzidas por um commit, mostrando apenas os nomes dos arquivos e seus status (Adicionado, Modificado, Excluído, etc.). Isso é mais rápido do que olhar para o diff completo se você só quiser saber quais arquivos foram envolvidos.
Compreender como inspecionar commits é crucial para navegar no histórico do seu projeto e entender como ele evoluiu.
Usar git diff-tree para Arquivos Adicionados
Nesta etapa, usaremos outro comando, git diff-tree, para ver as alterações introduzidas por um commit. Embora git show seja ótimo para ver os detalhes completos do commit e o diff, git diff-tree é útil para scripting e cenários mais avançados.
Certifique-se de ainda estar no diretório ~/project/my-time-machine.
Usaremos git diff-tree com as opções -r (recursivo) e --name-status, seguido pelo hash do commit. Você pode obter o hash do commit na saída de git log ou git show. Para nosso primeiro commit, também podemos usar HEAD.
git diff-tree -r --name-status HEAD
Você deve ver uma saída semelhante a esta:
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 A message.txt
Vamos analisar a saída:
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9é o hash do commit.Aindica o status da alteração do arquivo (Adicionado).message.txté o nome do arquivo.
Esta saída é muito semelhante à parte --name-status de git show. Para um commit simples como o nosso primeiro (que só adicionou um arquivo), a saída é quase idêntica. No entanto, git diff-tree é mais flexível e pode ser usado para comparar diferentes árvores (snapshots) em seu repositório, não apenas commits.
Por enquanto, a principal conclusão é que tanto git show --name-status quanto git diff-tree -r --name-status podem mostrar quais arquivos foram alterados e como em um determinado commit. Esta é uma habilidade fundamental para entender o histórico do seu projeto.
Testar Arquivos Modificados vs Adicionados
Nas etapas anteriores, vimos como git show --name-status e git diff-tree --name-status mostram um A para um arquivo adicionado. Agora, vamos ver como eles se comportam quando um arquivo é modificado.
Primeiro, certifique-se de estar no diretório ~/project/my-time-machine.
Vamos adicionar outra linha ao nosso arquivo message.txt:
echo "Hello again, Future Me" >> message.txt
O operador >> anexa o texto ao arquivo existente.
Agora, vamos verificar o status do nosso repositório:
git status
Você deve ver uma saída indicando que message.txt foi modificado:
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
no changes added to commit (use "git add" and/or "git commit -a")
O Git identifica corretamente que o arquivo foi modificado.
Agora, vamos preparar essa alteração:
git add message.txt
E verificar o status novamente:
git status
A saída agora deve mostrar que a alteração está preparada:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
Observe que, embora tenhamos adicionado conteúdo, o Git rastreia isso como um arquivo modificado porque o arquivo já existia no commit anterior.
Finalmente, vamos confirmar essa alteração:
git commit -m "Add another message to the future"
Você deve ver uma saída confirmando o commit:
[master a1b2c3d] Add another message to the future
1 file changed, 1 insertion(+)
Agora temos um novo commit. Vamos usar git show --name-status no commit mais recente (HEAD) para ver o status:
git show --name-status HEAD
A saída será semelhante a esta:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:05:00 2023 +0000
Add another message to the future
M message.txt
Observe o M antes de message.txt. Isso indica que o arquivo foi Modificado neste commit.
Da mesma forma, se você usar git diff-tree -r --name-status HEAD, também verá o status M.
Essa distinção entre A (Adicionado) e M (Modificado) é importante para entender o histórico de seus arquivos no Git. A significa que o arquivo foi criado naquele commit, enquanto M significa que o arquivo existia antes e seu conteúdo foi alterado.
Resumo
Neste laboratório, aprendemos como verificar se um arquivo foi adicionado em um commit do Git. Primeiro, exploramos o comando git show --name-status, que fornece um resumo conciso das alterações em um commit, incluindo o status (como 'A' para Adicionado) e o nome dos arquivos afetados. Esta é uma maneira rápida de ver quais arquivos foram envolvidos em um commit sem visualizar o diff completo.
Em seguida, introduzimos o comando git diff-tree com as opções -r e --name-status como um método alternativo para inspecionar as alterações do commit, particularmente útil para scripting e cenários avançados. Embora os detalhes completos desta etapa não tenham sido fornecidos, a introdução indica que seu objetivo é explorar mais a fundo como identificar arquivos adicionados dentro de um commit usando um comando Git diferente.



