Odpowiedzi:
Możesz to zrobić:
git diff master~20:pom.xml pom.xml
... aby porównać swój prąd pom.xmlz tym z master20 wersji temu przez pierwszego rodzica. Możesz master~20oczywiś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.xmlz 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> <path>
Na przykład:
git diff b0d14a4 foobar.txt
git diff <revision> root/path/file.
Jeśli chcesz zobaczyć różnicę między ostatnim zatwierdzeniem jednego pliku, możesz:
git log -p -1 filename
To da ci różnicę pliku w git, nie porównuje pliku lokalnego.
-1krok po kroku, aż otrzymasz zmiany.
gitlog () { git log -${3:-p} -${2:-1} $1; } Używany jak: gitlog Rakefilelub gitlog Rakefile 5i gitlog 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:
git diff HEAD~1 path/to/file.
Możesz zmienić liczbę (~ 1) na n-ty zatwierdzenie, z którym chcesz się różnić.
HEAD~1jest podstawiona <revision>, co czyni tę odpowiedź duplikatem.
Ogólna składnia:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
dla wszystkich plików o nazwie „FileName.xml” w dowolnym miejscu repozytorium.
Zwróć uwagę na spację między „-” a „**”
Odpowiedz na swoje pytanie:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
jak zawsze w przypadku git, możesz użyć tagu / sha1 / „HEAD ^”, aby zidentyfikować zatwierdzenie.
Testowane z git 1.9.1 na Ubuntu.
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:
git diff master~20:pom.xml master:pom.xml
Stanie się
git diff {master~20,master}:pom.xml
Więcej na temat rozszerzenia Brace dzięki bash.
Aby porównać do 5 zatwierdzeń do bieżącego, oba włączone master, po prostu wykonaj:
git diff master~5:pom.xml master:pom.xml
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ę:
git diff x110bd64 pom.xml
git diff -w HEAD origin / master path / to / file
git diff master~20 -- pom.xml
Działa, jeśli nie jesteś również w gałęzi master.
Jeśli nic ci nie jest, używając narzędzia graficznego (lub nawet wolisz), możesz:
gitk pom.xml
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.
Dla osób zainteresowanych zrobieniem tego samego z GitHub zobacz porównywanie zmian w czasie .
Jeśli chcesz na przykład różnicować pojedynczy plik w skrytce, możesz to zrobić
git diff stash@{0} -- path/to/file
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:
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
Na przykład:
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.
git diff <revision>:foo/ HEAD:foo/.