Używając Git, jak możesz znaleźć różnicę między bieżącą a ostatnią wersją?
git diff last version:HEAD
Używając Git, jak możesz znaleźć różnicę między bieżącą a ostatnią wersją?
git diff last version:HEAD
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:
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
~należy użyć znaku zamiast ^.@jest pseudonimem dla HEAD. A ponieważ ~i ^są takie same, gdy cofam się tylko o jedno zatwierdzenie, git diff @~..@znacznie łatwiej jest pisać.
git showjest jeszcze łatwiejszy, ponieważ @~..@jest to domyślna rzecz do pokazania.
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.
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
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).Źródło: git-diff (1) Strona podręcznika - Cerran
-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)
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ć
git show
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.
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”.
git diff HEAD^(zamiast równoważnej HEAD~formy). Jest to trochę łatwiejsze do zapamiętania dla „starego
~i co @oznacza.
diff HEAD^ HEADpowinna być krótsza składnia git diff @^!. Zobacz git-scm.com/docs/gitrevisions dlar1^!
Po prostu użyj cachedflagi, jeśli dodałeś, ale jeszcze tego nie zrobiłeś:
git diff --cached --color
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:
git diff <commit_id1> <commit_id2>
lub
git difftool <commit_id1> <commit_id2>
Jeśli HEAD wskazuje najwyższe zatwierdzenie, możesz zrobić coś takiego:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Różnica między pierwszym a drugim zatwierdzeniem:
git diff HEAD~1 HEAD
Różnica między pierwszym a trzecim zatwierdzeniem:
git diff HEAD~2 HEAD
Różnica między drugim a trzecim zatwierdzeniem:
git diff HEAD~2 HEAD~1
I tak dalej...
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ą” .
Działa to również w przypadku tagów (usuń poniższy „uniq” i inne części, jeśli chcesz zobaczyć wszystkie zmiany):
git diff v1.58 HEAD
Poniżej jest to samo i może być przydatne do ciągłej integracji (CI) dla mikrousług w monolitycznym repozytorium:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Kredyt - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )