git diff
może pokazać różnicę między dwoma zatwierdzeniami:
git diff mybranch master -- myfile.cs
Lub równoważnie:
git diff mybranch..master -- myfile.cs
Używając tej drugiej składni, jeśli którąkolwiek ze stron jest HEAD
, można ją pominąć (np. master..
Porównuje master
do HEAD
).
Możesz być także zainteresowany mybranch...master
(z git diff
dokumentów ):
Ten formularz służy do przeglądania zmian w gałęzi zawierającej i do drugiej <commit>
, zaczynając od wspólnego przodka obu <commit>
. git diff A...B
jest równoważne z git diff $(git-merge-base A B) B
.
Innymi słowy, da to różnicę w zmianach, master
ponieważ odbiegało mybranch
(ale bez nowych zmian od tego czasu w mybranch
).
We wszystkich przypadkach --
separator przed nazwą pliku wskazuje koniec flag wiersza poleceń. Jest to opcjonalne, chyba że Git się pomyli, jeśli argument odnosi się do zatwierdzenia lub pliku, ale włączenie go nie jest złym nawykiem. Zobacz kilka przykładów na https://stackoverflow.com/a/13321491/54249
Te same argumenty mogą zostać przekazane, git difftool
jeśli masz jeden skonfigurowany.
git diff branch1 branch2 myfile.cs
. (Nie--
powinno to już być konieczne, ponieważ może zająć tylko dwa argumenty rewizji.)--
. Powszechnego i łatwego błędu do popełnienia.)git diff --name-status branch1..branch2
(prawdopodobnie oczywiste, ale pomyślałem, że wspomnę o tym na wypadek, gdyby ktoś miał takie same problemy).Możesz to zrobić:
git diff branch1:path/to/file branch2:path/to/file
Jeśli skonfigurowałeś difftool, możesz także:
git difftool branch1:path/to/file branch2:path/to/file
Powiązane pytanie: Jak wyświetlić dane wyjściowe git diff za pomocą programu Visual Diff
źródło
branch1:./file
.). Jest to również przydatne, jeśli plik znajduje się w oddzielnej lokalizacji między gałęziami (npgit diff branch1:old/path/to/file branch2:new/path/to/file
.).git diff branch1 branch2 path/to/file
.Bardziej nowoczesna składnia:
git diff ..master path/to/file
Prefiks z podwójną kropką oznacza „z bieżącego katalogu roboczego do”. Możesz też powiedzieć:
master..
, tj. odwrotność powyższego. To jest to samo comaster
.mybranch..master
, wyraźnie odwołując się do stanu innego niż bieżące drzewo robocze.v2.0.1..master
, tj. odwoływanie się do tagu.[refspec]..[refspec]
, w zasadzie wszystko, co można zidentyfikować jako stan kodu do git.źródło
Istnieje wiele sposobów porównywania plików z dwóch różnych gałęzi:
Opcja 1: Jeśli chcesz porównać plik z konkretnej gałęzi z inną konkretną gałęzią:
Przykład:
Opcja 2: Prosty sposób:
Przykład:
Opcja 3: Jeśli chcesz porównać bieżący katalog roboczy z jakimś oddziałem:
Przykład:
źródło
Po prostu robię
git diff branch1 branch2 path/to/file
Sprawdza to różnice między plikami. Zmiany w
branch1
byłyby na czerwono. Zmianybranch2
będą w kolorze zielonym.Zakłada się, że
branch1
to przeszłość ibranch2
przyszłość. Możesz to odwrócić, odwracając kolejność gałęzi w pliku różnicowym:git diff branch2 branch1
źródło
Jeśli chcesz zrobić różnicę w stosunku do bieżącej gałęzi, możesz ją pominąć i użyć:
git diff $BRANCH -- path/to/file
w ten sposób będzie się różnić od bieżącej gałęzi do referencyjnej gałęzi (
$BRANCH
).źródło
Zgadzam się z odpowiedzią sugerowaną przez @dahlbyk. Jeśli chcesz, aby diff został zapisany w pliku diff do recenzji kodu, użyj następującego polecenia.
źródło
W moim przypadku używam poniższego polecenia:
To polecenie może pomóc porównać ten sam plik w dwóch różnych gałęziach
źródło
Najlepszym sposobem na to jest użycie
git diff
następującego sposobu:git diff <source_branch> <target_branch> -- file_path
Sprawdzi różnicę między plikami w tych gałęziach. Przeczytaj ten artykuł, aby uzyskać więcej informacji na temat poleceń git i ich działania.
źródło
Użyj skrótów zatwierdzania w następujący sposób:
gdzie hash1 może być dowolnym zatwierdzeniem z dowolnej gałęzi, to samo dla hash2 .
źródło
Istnieją dwa scenariusze porównywania plików:
Scenariusz 1: Porównaj pliki w zdalnych oddziałach (obie gałęzie powinny istnieć w zdalnym repozytorium)
Scenariusz 2: Porównaj pliki lokalne (w lokalnej kopii obszaru roboczego) z plikami w zdalnym repozytorium.
Logika jest prosta. Jeśli podasz dwie nazwy gałęzi w celu porównania, zawsze porówna gałęzie zdalne, a jeśli podasz tylko jedną nazwę gałęzi, zawsze porówna lokalną kopię roboczą ze zdalnym repozytorium (tą, którą podałeś). Możesz użyć zakresu, aby zapewnić zdalne repozytoria.
np. kasy oddział
w takim przypadku, jeśli podasz nazwę pliku, porówna twoją lokalną kopię nazwy pliku ze zdalną gałęzią o nazwie „ gałąź2 ”.
w tym przypadku porówna nazwę pliku ze zdalnych gałęzi o nazwie „ gałąź 1 ” i „ gałąź 2 ”
również w tym przypadku porówna nazwę pliku ze zdalnych gałęzi o nazwie „ gałąź 1 ” i „ gałąź 2 ”. Tak samo jak powyżej. Jeśli jednak właśnie utworzyłeś gałąź z innej gałęzi, powiedz „master”, a twoja obecna gałąź nie istnieje w zdalnym repozytorium, porówna ona zdalny „ master ” ze zdalnym „ branch2 ”.
Mam nadzieję, że się przyda.
źródło
Aby porównać dwa pliki w git bash, musisz użyć polecenia:
To polecenie pokaże różnicę między dwoma plikami w samym bashu.
źródło