Testar Arquivos Não Alterados
Nas etapas anteriores, vimos como git status e git diff funcionam quando um arquivo foi modificado. Mas o que acontece se executarmos esses comandos quando não houver alterações?
Vamos descobrir! Certifique-se de estar no diretório ~/project/my-time-machine.
Primeiro, execute git status:
git status
Como não fizemos nenhuma alteração desde a última vez que verificamos o status, você deve ver a mesma saída de antes, indicando que message.txt foi modificado, mas não está staged:
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")
Agora, vamos tentar executar git diff novamente:
git diff
Você deve ver a mesma saída de diff de antes, mostrando a diferença entre o arquivo atual e o último commit:
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+P.S. Hope you're doing well!
Isso confirma que git status e git diff mostram o estado atual do seu diretório de trabalho em relação ao último commit, independentemente de quantas vezes você executar os comandos sem fazer mais alterações.
Agora, vamos fazer o stage das alterações que fizemos em message.txt usando git add:
git add message.txt
Execute git status novamente:
git status
A saída mudará para mostrar que as alterações agora estão staged:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
Observe que git status agora mostra "Changes to be committed" (Alterações a serem commitadas). Isso significa que as alterações estão na área de staging, prontas para o próximo commit.
E quanto a git diff agora? Vamos tentar:
git diff
Desta vez, git diff não mostrará nenhuma saída. Por quê? Porque quando você executa git diff sem nenhum argumento, ele compara seu diretório de trabalho com a área de staging. Como acabamos de adicionar as alterações à área de staging, o diretório de trabalho e a área de staging são idênticos.
Para ver a diferença entre a área de staging e o último commit, você usaria git diff --staged. Vamos tentar isso:
git diff --staged
Isso mostrará o diff das alterações que estão atualmente na área de staging, que é a linha que adicionamos:
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+P.S. Hope you're doing well!
Compreender a diferença entre git diff (diretório de trabalho vs. área de staging) e git diff --staged (área de staging vs. último commit) é um conceito-chave no Git. Isso ajuda você a gerenciar suas alterações antes de commitá-las.
Pressione q para sair da visualização de diff, se ela aparecer.