Jeśli używasz GitHub do lokalizacji repozytorium w chmurze, jest to bardzo proste: przejdź do swojego projektu i kliknij nagłówek „zatwierdza” w tabeli, w której wyświetla się Twój projekt
David Lundquist,
1
Znaczenie „aktualnej i ostatniej wersji” naprawdę powinno zostać wyjaśnione w pytaniu.
faintsignal
Odpowiedzi:
1170
Naprawdę nie rozumiem znaczenia „ostatniej wersji”.
Ponieważ dostęp do poprzedniego zatwierdzenia można uzyskać za pomocą HEAD ^, myślę, że szukasz czegoś takiego:
git diff HEAD^ HEAD
Począwszy od Gita 1.8.5, @jest to alias HEAD, więc możesz użyć:
git diff @~..@
Działa również:
git show
Jeśli chcesz poznać różnicę między head a dowolnym zatwierdzeniem, którego możesz użyć:
git diff commit_id HEAD
Spowoduje to uruchomienie narzędzia wizualnego porównywania (jeśli skonfigurowano):
git difftool HEAD^ HEAD
Ponieważ porównanie z HEAD jest domyślne, możesz je pominąć (jak wskazał Orient ):
git diff @^
git diff HEAD^
git diff commit_id
Ostrzeżenia
@ScottF i @Panzercrisis wyjaśniają w komentarzach, że w Windows ~należy użyć znaku zamiast ^.
Chciałem czegoś takiego jak zatwierdzona wersja i wersja przed nim ... git diff head head-1
Rajeev
7
Od wersji Git 1.8.5 @jest pseudonimem dla HEAD. A ponieważ ~i ^są takie same, gdy cofam się tylko o jedno zatwierdzenie, git diff @~..@znacznie łatwiej jest pisać.
Andrew
80
@Andrew git showjest jeszcze łatwiejszy, ponieważ @~..@jest to domyślna rzecz do pokazania.
amalloy
3
git showpo prostu drukuje komunikat zatwierdzenia, nie wypisuje różnic konkretnych zmian, przynajmniej w Git 2.5.4 (Apple Git-61), więc w rzeczywistości nie byłby to odpowiedź na pytanie OP.
user1944491
1
Problem git showpolega na tym, że jeśli HEADjest to zatwierdzenie scalania, nie dostaniesz tego, czego oczekujesz, ponieważ samo zatwierdzenie scalania może nie zawierać żadnych zmian. git diff HEAD^ HEADpokaże rzeczywiste zmiany między wersjami
RubenLaguna
158
Zakładając, że „bieżąca wersja” to katalog roboczy (niezatwierdzone modyfikacje), a „ostatnia wersja” to HEAD(ostatnie zatwierdzone modyfikacje dla bieżącej gałęzi), po prostu wykonaj
git diff HEAD
Kredyt za następujące dotyczy użytkownika Cerran.
A jeśli zawsze pomijasz obszar pomostowy -apodczas zatwierdzania, możesz po prostu użyć git diff.
Podsumowanie
git diff pokazuje zmiany etapowe.
git diff --cached pokazuje zmiany etapowe.
git diff HEAD pokazuje wszystkie zmiany (zarówno etapowe, jak i niestacjonarne).
A jeśli zawsze pomijasz obszar pomostowy -apodczas zatwierdzania, możesz po prostu użyć git diff. <1> git diffpokazuje zmiany etapowe . <2> git diff --cachedpokazuje zmiany etapowe . <3> git diff HEADpokazuje wszystkie zmiany (zarówno etapowe, jak i niestacjonarne). Źródło: Strona git-diff (1)
Cerran
1
To powinna być zaakceptowana odpowiedź, ponieważ odpowiada ona celowi pytania.
tgoneil
Jak nazywa się „aktualna wersja niestacjonarna” w git? Czy jest tak naprawdę imię?
Mathieu CAROFF,
118
Jak podkreślono w komentarzu przez amalloy , jeśli przez „Informacje bieżące i ostatnie wersje” masz na myśli ostatni popełnić i popełnić wcześniej, można po prostu użyć
Służy git show HEAD~1do wyświetlania ostatniego zatwierdzenia i git show HEAD~2itd. Dla starszych zatwierdzeń. Pokaż tylko jeden plik przez git show HEAD~2 my_file.
Florian Brucker
60
Różnica między ostatnim a jednym zatwierdzeniem i ostatnim zatwierdzeniem (plus aktualny stan, jeśli istnieje):
git diff HEAD~
lub nawet (łatwiejsze do pisania)
git diff @~
gdzie @jest synonimem HEADbieżącej gałęzi i ~oznacza „daj mi rodzic wspomnianej wersji”.
Bardzo lubię git diff HEAD^(zamiast równoważnej HEAD~formy). Jest to trochę łatwiejsze do zapamiętania dla „starego
dupka
3
Marchew jest problemem w niektórych terminalach. Miło mieć opcję
light24bulbs
1
Odpowiedź można poprawić, wyjaśniając, co ~i co @oznacza.
Bob Stein
1
Jeśli chcemy tylko sprawdzić, co jest zatwierdzone w ostatnim zatwierdzeniu, nie używaj tego (ponieważ brudne zmiany wpływają na różnicę). Tak naprawdę diff HEAD^ HEADpowinna być krótsza składnia git diff @^!. Zobacz git-scm.com/docs/gitrevisions dlar1^!
Johnny Wong
@JohnnyWong Dziękujemy za wyjaśnienia. Wspomniałem o „obecnym stanie”, aby nie mylić czytelników.
Tomilov Anatoliy
53
Możesz to zrobić w ten sposób:
Porównaj z poprzednim zatwierdzeniem
git diff --name-status HEAD~1..HEAD
Porównaj z obecnymi i poprzednimi dwoma zatwierdzeniami
Po pierwsze użyj „git log ”, aby wyświetlić dzienniki repozytorium.
Teraz wybierz dwa identyfikatory zatwierdzenia, odnoszące się do dwóch zatwierdzeń. Chcesz zobaczyć różnice ( przykład - Top najwięcej zatwierdzeń i niektóre starsze zatwierdzenia (zgodnie z oczekiwaniami dotyczącymi bieżącej wersji i niektórych starszych wersji) ).
Odpowiedzi:
Naprawdę nie rozumiem znaczenia „ostatniej wersji”.
Ponieważ dostęp do poprzedniego zatwierdzenia można uzyskać za pomocą HEAD ^, myślę, że szukasz czegoś takiego:
Począwszy od Gita 1.8.5,
@
jest to aliasHEAD
, więc możesz użyć:Działa również:
Jeśli chcesz poznać różnicę między head a dowolnym zatwierdzeniem, którego możesz użyć:
Spowoduje to uruchomienie narzędzia wizualnego porównywania (jeśli skonfigurowano):
Ponieważ porównanie z HEAD jest domyślne, możesz je pominąć (jak wskazał Orient ):
Ostrzeżenia
~
należy użyć znaku zamiast^
.źródło
@
jest pseudonimem dlaHEAD
. A ponieważ~
i^
są takie same, gdy cofam się tylko o jedno zatwierdzenie,git diff @~..@
znacznie łatwiej jest pisać.git show
jest jeszcze łatwiejszy, ponieważ@~..@
jest to domyślna rzecz do pokazania.git show
po prostu drukuje komunikat zatwierdzenia, nie wypisuje różnic konkretnych zmian, przynajmniej w Git 2.5.4 (Apple Git-61), więc w rzeczywistości nie byłby to odpowiedź na pytanie OP.git show
polega na tym, że jeśliHEAD
jest to zatwierdzenie scalania, nie dostaniesz tego, czego oczekujesz, ponieważ samo zatwierdzenie scalania może nie zawierać żadnych zmian.git diff HEAD^ HEAD
pokaże rzeczywiste zmiany między wersjamiZakładając, że „bieżąca wersja” to katalog roboczy (niezatwierdzone modyfikacje), a „ostatnia wersja” to
HEAD
(ostatnie zatwierdzone modyfikacje dla bieżącej gałęzi), po prostu wykonajKredyt za następujące dotyczy użytkownika
Cerran
.A jeśli zawsze pomijasz obszar pomostowy
-a
podczas zatwierdzania, możesz po prostu użyćgit diff
.Podsumowanie
git diff
pokazuje zmiany etapowe.git diff --cached
pokazuje zmiany etapowe.git diff HEAD
pokazuje wszystkie zmiany (zarówno etapowe, jak i niestacjonarne).Źródło: git-diff (1) Strona podręcznika - Cerran
źródło
-a
podczas zatwierdzania, możesz po prostu użyćgit diff
. <1>git diff
pokazuje zmiany etapowe . <2>git diff --cached
pokazuje zmiany etapowe . <3>git diff HEAD
pokazuje wszystkie zmiany (zarówno etapowe, jak i niestacjonarne). Źródło: Strona git-diff (1)Jak podkreślono w komentarzu przez amalloy , jeśli przez „Informacje bieżące i ostatnie wersje” masz na myśli ostatni popełnić i popełnić wcześniej, można po prostu użyć
źródło
git show HEAD~1
do wyświetlania ostatniego zatwierdzenia igit show HEAD~2
itd. Dla starszych zatwierdzeń. Pokaż tylko jeden plik przezgit show HEAD~2 my_file
.Różnica między ostatnim a jednym zatwierdzeniem i ostatnim zatwierdzeniem (plus aktualny stan, jeśli istnieje):
lub nawet (łatwiejsze do pisania)
gdzie
@
jest synonimemHEAD
bieżącej gałęzi i~
oznacza „daj mi rodzic wspomnianej wersji”.źródło
git diff HEAD^
(zamiast równoważnejHEAD~
formy). Jest to trochę łatwiejsze do zapamiętania dla „starego~
i co@
oznacza.diff HEAD^ HEAD
powinna być krótsza składniagit diff @^!
. Zobacz git-scm.com/docs/gitrevisions dlar1^!
Możesz to zrobić w ten sposób:
Porównaj z poprzednim zatwierdzeniem
Porównaj z obecnymi i poprzednimi dwoma zatwierdzeniami
źródło
Po prostu użyj
cached
flagi, jeśli dodałeś, ale jeszcze tego nie zrobiłeś:źródło
Szybkie i proste, zakładając, że jesteś mistrzem:
Przykład:
źródło
Po pierwsze użyj „
git log
”, aby wyświetlić dzienniki repozytorium.Teraz wybierz dwa identyfikatory zatwierdzenia, odnoszące się do dwóch zatwierdzeń. Chcesz zobaczyć różnice ( przykład - Top najwięcej zatwierdzeń i niektóre starsze zatwierdzenia (zgodnie z oczekiwaniami dotyczącymi bieżącej wersji i niektórych starszych wersji) ).
Następnie użyj:
lub
źródło
Jeśli HEAD wskazuje najwyższe zatwierdzenie, możesz zrobić coś takiego:
Różnica między pierwszym a drugim zatwierdzeniem:
Różnica między pierwszym a trzecim zatwierdzeniem:
Różnica między drugim a trzecim zatwierdzeniem:
I tak dalej...
źródło
Używam Bitbucket z Eclipse IDE z Eclipse EGit zainstalowaną wtyczką .
Porównuję plik z dowolnej wersji jego historii (np. SVN ).
Menu Project Explorer → Plik → kliknij prawym przyciskiem → Zespół → Pokaż w historii .
Spowoduje to wyświetlenie historii wszystkich zmian w tym pliku. Teraz Ctrlkliknij i wybierz dowolne dwie wersje → „Porównaj ze sobą” .
źródło
Działa to również w przypadku tagów (usuń poniższy „uniq” i inne części, jeśli chcesz zobaczyć wszystkie zmiany):
Poniżej jest to samo i może być przydatne do ciągłej integracji (CI) dla mikrousług w monolitycznym repozytorium:
(Kredyt - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )
źródło