Testar com Commits Anteriores
Nas etapas anteriores, aprendemos sobre HEAD e como obter seu hash de commit. Agora, vamos ver como o Git se refere a commits mais antigos.
Atualmente, temos apenas um commit em nosso repositório. Para demonstrar como se referir a commits mais antigos, precisamos fazer outro commit.
Primeiro, vamos adicionar outra linha ao nosso arquivo message.txt. Use o comando echo com >> para anexar texto ao arquivo:
echo "This is a second message." >> message.txt
Agora, vamos verificar o status:
git status
Você deve ver 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)
Agora, prepare as alterações e crie um novo commit:
git add message.txt
git commit -m "Add a second message"
Você deve ver a saída indicando que um novo commit foi criado:
[master a1b2c3d] Add a second message
1 file changed, 1 insertion(+)
Agora temos dois commits. Vamos visualizar o log novamente:
git log --oneline
A opção --oneline fornece uma visualização concisa do log. Você deve ver algo como isto (os hashes serão diferentes):
a1b2c3d (HEAD -> master) Add a second message
e4f5g6h Send a message to the future
O commit superior é o mais recente, e é para onde HEAD está apontando. O commit abaixo dele é o mais antigo.
O Git fornece maneiras de se referir a commits relativos a HEAD. O commit diretamente antes de HEAD pode ser referido como HEAD~1 ou HEAD^. Vamos tentar obter o hash do commit anterior usando git rev-parse:
git rev-parse HEAD~1
Você deve ver o hash do primeiro commit que você fez:
e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3
Este hash deve corresponder ao hash do commit "Send a message to the future" na sua saída git log --oneline.
Você pode usar HEAD~2, HEAD~3 e assim por diante, para se referir a commits mais distantes no histórico. Essa referência relativa é muito útil para navegar no histórico do seu projeto e realizar operações em versões específicas do passado.