Dla porównania, odpowiedź na to drugie pytanie ilustruje, w jaki sposób można skonfigurować alias oparty na bash, aby uprościć powyższe: stackoverflow.com/questions/3321492/...
Istnieją dwa inne skróty do nazwania zestawu utworzonego przez zatwierdzenie i jego zatwierdzenia nadrzędne. Notacja r1 ^ @ oznacza wszystkich rodziców r1. r1 ^! obejmuje zatwierdzenie r1, ale wyklucza wszystkich jego rodziców.
Oznacza to, że możesz używać go 15dc8^!jako stenografii w 15dc8^..15dc8dowolnym miejscu w git, gdzie potrzebne są poprawki. Dla polecenia diffgit diff 15dc8^..15dc8 rozumiane jest jako git diff 15dc8^ 15dc8, co oznacza różnicę między rodzicem funkcji commit ( 15dc8^) i commit ( 15dc8).
Uwaga : opis na stronie git-rev-parse(1)podręcznika mówi o zakresach wersji , w których musi działać również w przypadku zatwierdzeń łączenia, z więcej niż jednym rodzicem. Następnie r1^!jest „ r1 --not r1^@” tj. „ r1 ^r1^1 ^r1^2 ...”
Możesz także użyć, git show COMMITaby uzyskać opis zatwierdzenia i różnicę dla zatwierdzenia. Jeśli chcesz tylko różnicę, możesz użyćgit diff-tree -p COMMIT
To powinna być zaakceptowana odpowiedź, jest o wiele ładniejsza. Jednak ostatnie zdanie wyciągu z git-rev-parse jest dość mylące - wydaje się, że oznacza „zakres od rodzica tego zatwierdzenia do tego zatwierdzenia”.
@RichVel: jest to nieco mylące, ponieważ próbuje opisać również sytuację, w której zatwierdzenie ma więcej niż jednego rodzica (jest zatwierdzeniem scalania). r1 ^! działa wtedy również zgodnie z oczekiwaniami.
@ JakubNarębski: dobrze, być może mógłbyś zredagować swoją odpowiedź, aby podsumować swoje rozumienie spraw dotyczących jednego i wielu rodziców - oddzielne stwierdzenia na każdym z nich mogą być łatwiejsze do zrozumienia.
Jak wskazuje @mipadi, możesz użyć git show $COMMIT, ale pokazuje to także niektóre nagłówki i komunikat zatwierdzenia. Jeśli chcesz mieć prosty diff, użyj git show --pretty=format:%b $COMMIT.
To oczywiście nie jest krótka ręka, więc zachowuję ten alias w moim .gitconfig
[alias]
sd = show --pretty=format:%b
To pozwala mi używać git sd $COMMITdo pokazywania różnic .
Wiele z wymienionych przykładów (np. git diff 15dc8^!Lub git diff 15dc8^..15dc8) nie działa, jeśli używasz zsh i masz extendedglobustawione opcje. Możesz to naprawić na jeden z następujących trzech sposobów:
unsetopt extendedglob (i / lub usuń go z .zshrc)
setopt NO_NOMATCH (i / lub ustaw w .zshrc)
uciekaj z karetki i uderzaj za każdym razem odwrotnym ukośnikiem, np git diff 15dc8\^\!
Powyższe rozwiązanie Paula zrobiło to, na co liczyłem.
$ git diff HEAD^1
Przydatne jest również dodawanie aliasów, takich jak wspomniane płyty grzewcze, jeśli umieścisz poniższe w sekcji [alias] pliku ~ / .gitconfig, możesz użyć skrótu, aby wyświetlić różnice między głową a poprzednią.
[alias]
diff-last = diff HEAD^1
Następnie uruchomienie $ git diff-last da ci wynik. Pamiętaj, że obejmie to także wszelkie zmiany, których jeszcze nie zatwierdziłeś, a także różnicę między zatwierdzeniami. Jeśli chcesz zignorować zmiany, których jeszcze nie zatwierdziłeś, możesz użyć diff, aby bezpośrednio porównać HEAD z jego rodzicem:
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.