Testar com Arquivos Não Modificados
Nas etapas anteriores, vimos como git show --name-only e git diff-tree -r --name-only mostram os arquivos que foram alterados em um commit específico. Agora, vamos ver o que acontece quando executamos esses comandos em um commit onde nenhum arquivo foi modificado (o que não é o caso do nosso único commit, mas podemos simular a ideia).
Como nosso repositório atual tem apenas um commit onde um arquivo foi adicionado, executar esses comandos nesse commit sempre mostrará message.txt. Para ilustrar o conceito de mostrar apenas arquivos modificados, vamos imaginar que tínhamos um commit que não alterou nenhum arquivo (isso geralmente acontece com commits de merge ou commits que alteram apenas metadados, mas para este exercício, focaremos na saída quando nenhum arquivo for listado).
Se você executasse git show --name-only ou git diff-tree -r --name-only em um commit que não modificou nenhum arquivo, a saída para a parte dos nomes dos arquivos estaria vazia.
Vamos executar novamente os comandos que aprendemos para reforçar o conceito. Certifique-se de estar no diretório my-time-machine:
cd ~/project/my-time-machine
Execute git show --name-only novamente:
git show --name-only HEAD
A saída será semelhante a:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:00:00 2023 +0000
Send a message to the future
message.txt
Agora execute git diff-tree -r --name-only novamente:
git diff-tree -r --name-only HEAD
A saída será:
message.txt
Ambos os comandos mostram corretamente message.txt porque esse arquivo foi introduzido neste commit. A principal conclusão aqui é que esses comandos são projetados para listar apenas os arquivos que foram alterados (adicionados, excluídos ou modificados) no commit especificado. Se um commit não alterar nenhum arquivo, esses comandos (especificamente a parte da listagem de arquivos) não mostrariam nada.
Este comportamento é importante para entender o escopo das mudanças introduzidas por um commit. Ele ajuda você a identificar rapidamente quais partes do seu projeto foram afetadas por uma alteração específica.