Às vezes, quando estou prestes a fazer um commit, não consigo me lembrar exatamente o que mudou desde o último commit. Como posso ver uma diferença do estado atual do código e o último commit?
Às vezes, quando estou prestes a fazer um commit, não consigo me lembrar exatamente o que mudou desde o último commit. Como posso ver uma diferença do estado atual do código e o último commit?
Respostas:
Se você ainda não adicionou nenhum arquivo ao índice (com git add), basta fazer
git diff
Isso mostrará a diferença entre sua árvore de trabalho e o índice.
Se você adicionou arquivos ao índice, você precisa fazer isso para mostrar as diferenças entre o índice e o último commit (HEAD).
git diff --cached
Finalmente, se você quiser ver as mudanças feitas na árvore de trabalho em comparação com o último commit ( HEAD) você pode (como Carlos aponta) fazer
git diff HEAD
Essas mudanças são a combinação de git diffe git diff --cached.
git diffo estado do índice e o commit anterior em uma mensagem diff?
git diff --cached HEAD^:)
Se você acabou de fazer um commit, ou quer ver o que mudou no último commit em comparação com o estado atual (assumindo que você tem uma árvore de trabalho limpa), você pode usar:
git diff HEAD^
Isso irá comparar o HEAD com o commit imediatamente anterior. Também se pode fazer
git diff HEAD^^
para comparar com o estado de jogo 2 commits atrás. Para ver a diferença entre o estado atual e um determinado commit, basta fazer:
git diff b6af6qc
Onde b6af6qcestá um exemplo de hash de confirmação.
HEAD^é o commit antes do último commit.
Você pede ao git para diferenciar o último / atual commit, que tem a abreviação de HEAD.
Portanto git diff HEAD, comparará o estado atual da árvore de trabalho com o commit atual.
isso também mostra a diferença e quais arquivos foram alterados / modificados.
$ git status
Exibe caminhos que têm diferenças entre o arquivo de índice e o commit HEAD atual, caminhos que têm diferenças entre a árvore de trabalho e o arquivo de índice e caminhos na árvore de trabalho que não são rastreados por git (e não são ignorados por gitignore (5) ) O primeiro é o que você iria cometer executando git commit; o segundo e o terceiro são o que você pode confirmar executando git add antes de executar git commit.
https://www.kernel.org/pub/software/scm/git/docs/git-status.html
Isso também funciona para mim:
# The last one
git diff HEAD~1 HEAD
# The last but one, etc...
git diff HEAD~2 HEAD~1
Isso geralmente funciona para uma história linear. Isso pode ficar mais complicado se também houver commits de mesclagem. Recomendo que você dê uma olhada neste documento para uma explicação agradável e completa, especialmente aquele exemplo de ilustração de árvore de commit:
Você já tentou git show?
DESCRIÇÃO : Mostra um ou mais objetos (blobs, trees, tags e commits).
Para commits, ele mostra a mensagem de log e a diferença textual. Ele também apresenta o commit de mesclagem em um formato especial produzido por git diff-tree --cc.
retirado do git help
Você não precisa escrever HEAD ou SHA-1 do último commit, apenas digite git show.
Acho que seria útil tanto para as suas necessidades quanto para as demais respostas, mas com um pouco menos de digitação e mais informações dependendo do caso.
Aqui, adiciono uma amostra do que git showrealmente mostra:
>> git show
commit 49832d33b5329fff95ba0a86002ee8d5a762f3ae (HEAD -> my_new_branch, master)
Author: Abimael Domínguez <my_mail@mail.com>
Date: Thu Jan 7 13:05:38 2021 -0600
This is the commit message of the last commit
diff --git a/some_folder/some_file.txt b/some_folder/some_file.txt
index 59fb665..5c36cde 100644
--- a/some_folder/some_file.txt
+++ b/some_folder/some_file.txt
@@ -3,6 +3,6 @@
This is the content of the last updated file
some text
some text
-text deleted
+text added
some text
some text
git diffcompara a árvore de trabalho com o índice, não HEAD.