Czasami, kiedy mam zamiar dokonać zatwierdzenia, nie pamiętam dokładnie, co się zmieniło od ostatniego zatwierdzenia. Jak mogę zobaczyć różnicę między bieżącym stanem kodu a ostatnim zatwierdzeniem?
93
Jeśli nie dodałeś jeszcze żadnych plików do indeksu (za pomocą git add
), po prostu zrób
git diff
To pokaże różnicę między twoim drzewem roboczym a indeksem.
Jeśli dodałeś pliki do indeksu, musisz to zrobić, aby pokazać różnice między indeksem a ostatnim zatwierdzeniem (HEAD).
git diff --cached
Wreszcie, jeśli chcesz zobaczyć zmiany dokonane w drzewie roboczym w porównaniu z ostatnim zatwierdzeniem ( HEAD
), możesz (jak wskazuje Carlos) zrobić
git diff HEAD
Te zmiany są połączeniem git diff
i git diff --cached
.
git diff
porównuje drzewo robocze z indeksem, a nie HEAD.git diff
wyświetlić stan indeksu i poprzednie zatwierdzenie w jednej wiadomości różnicowej?git diff --cached HEAD^
:)Jeśli właśnie wykonałeś zatwierdzenie lub chcesz zobaczyć, co zmieniło się w ostatnim zatwierdzeniu w porównaniu z obecnym stanem (zakładając, że masz czyste drzewo robocze), możesz użyć:
Spowoduje to porównanie HEAD z zatwierdzeniem bezpośrednio poprzedzającym. Można też to zrobić
porównać ze stanem 2 zatwierdzeń temu. Aby zobaczyć różnicę między bieżącym stanem a pewnym zatwierdzeniem, po prostu wykonaj:
Gdzie
b6af6qc
jest przykład skrótu zatwierdzenia.źródło
HEAD^
jest zatwierdzeniem przed ostatnim zatwierdzeniem.Pytasz git o porównanie aktualnego / ostatniego zatwierdzenia, które ma skrót
HEAD
.Więc
git diff HEAD
porówna bieżący stan drzewa roboczego z bieżącym zatwierdzeniem.źródło
pokazuje to również różnicę i jakie pliki zostały zmienione / zmodyfikowane.
Wyświetla ścieżki, które mają różnice między plikiem indeksu a bieżącym zatwierdzeniem HEAD, ścieżki, które mają różnice między drzewem roboczym a plikiem indeksu oraz ścieżki w drzewie roboczym, które nie są śledzone przez git (i nie są ignorowane przez gitignore (5) ). Pierwszą jest to, co byś zrobił, uruchamiając git commit; druga i trzecia to to, co możesz zatwierdzić, uruchamiając git add przed uruchomieniem git commit.
https://www.kernel.org/pub/software/scm/git/docs/git-status.html
źródło
To działa również dla mnie:
Zwykle działa to w przypadku historii liniowej. Może to być trudniejsze, jeśli istnieją również zatwierdzenia scalające. Polecam zajrzeć do tego dokumentu, aby uzyskać ładne i kompletne wyjaśnienie, zwłaszcza ten przykład drzewa zmian:
https://git-scm.com/docs/gitrevisions
źródło