Jak mogę odróżnić plik, powiedzmy pom.xml
, od gałęzi master do dowolnej starszej wersji w Git?
324
Możesz to zrobić:
git diff master~20:pom.xml pom.xml
... aby porównać swój prąd pom.xml
z tym z master
20 wersji temu przez pierwszego rodzica. Możesz master~20
oczywiście zastąpić nazwę obiektu (SHA1sum) zatwierdzenia lub dowolnym z wielu innych sposobów określania wersji .
Zauważ, że to faktycznie porównuje starą pom.xml
z wersją w twoim drzewie roboczym, a nie wersją zatwierdzoną w master
. Jeśli chcesz, możesz zamiast tego wykonać następujące czynności:
git diff master~20:pom.xml master:pom.xml
git diff <revision>:foo/ HEAD:foo/
.Na przykład:
źródło
git diff <revision> root/path/file
.Jeśli chcesz zobaczyć różnicę między ostatnim zatwierdzeniem jednego pliku, możesz:
To da ci różnicę pliku w git, nie porównuje pliku lokalnego.
źródło
-1
krok po kroku, aż otrzymasz zmiany.gitlog () { git log -${3:-p} -${2:-1} $1; }
Używany jak:gitlog Rakefile
lubgitlog Rakefile 5
igitlog Rakefile 10 s
. Pierwszy pokazuje jedną różnicę; drugi pokazuje pięć różnic; trzeci pokazuje dziesięć--no-patch
.Aby zobaczyć, co zostało zmienione w pliku w ostatnim zatwierdzeniu:
Możesz zmienić liczbę (~ 1) na n-ty zatwierdzenie, z którym chcesz się różnić.
źródło
HEAD~1
jest podstawiona<revision>
, co czyni tę odpowiedź duplikatem.Ogólna składnia:
dla wszystkich plików o nazwie „FileName.xml” w dowolnym miejscu repozytorium.
Zwróć uwagę na spację między „-” a „**”
Odpowiedz na swoje pytanie:
jak zawsze w przypadku git, możesz użyć tagu / sha1 / „HEAD ^”, aby zidentyfikować zatwierdzenie.
Testowane z git 1.9.1 na Ubuntu.
źródło
Jeśli żadne zatwierdzenie nie jest GŁOWĄ, wówczas rozwinięcie nawiasów bash okaże się bardzo przydatne, szczególnie jeśli twoje nazwy plików są długie, powyższy przykład:
Stanie się
Więcej na temat rozszerzenia Brace dzięki bash.
źródło
Aby porównać do 5 zatwierdzeń do bieżącego, oba włączone
master
, po prostu wykonaj:Możesz także odwołać się do numeru skrótu zatwierdzenia, na przykład jeśli numer skrótu to
x110bd64
, możesz zrobić coś takiego, aby zobaczyć różnicę:źródło
git diff -w HEAD origin / master path / to / file
źródło
Działa, jeśli nie jesteś również w gałęzi master.
źródło
Jeśli nic ci nie jest, używając narzędzia graficznego (lub nawet wolisz), możesz:
W gitk możesz następnie kliknąć dowolny zatwierdzenie (aby go „wybrać”) i kliknąć prawym przyciskiem myszy dowolny inny zatwierdzenie, aby wybrać „Zróżnicuj to -> wybrane” lub „Zróżnicuj wybrane -> to” w menu podręcznym, w zależności od preferowanej kolejności.
źródło
Dla osób zainteresowanych zrobieniem tego samego z GitHub zobacz porównywanie zmian w czasie .
źródło
Jeśli chcesz na przykład różnicować pojedynczy plik w skrytce, możesz to zrobić
źródło
Jeśli szukasz pliku różnic w konkretnym zatwierdzeniu i chcesz użyć interfejsu użytkownika github zamiast wiersza poleceń (powiedz, że chcesz połączyć go z innymi osobami), możesz:
Na przykład:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
Zwróć uwagę na łącza Poprzedni i Następny w prawym górnym rogu, które umożliwiają nawigację po wszystkich plikach w zatwierdzeniu.
Działa to jednak tylko dla konkretnego zatwierdzenia, a nie do porównywania dowolnych dwóch dowolnych wersji.
źródło