Jak zobaczyć zmiany kodu po git pull?

91

Chciałbym sprawdzić wszelkie zmiany kodu po wykonaniu git pull. Obecnie pokazuje mi tylko, które pliki się zmieniają. Jak mogę sprawdzić, który kod się zmienił?

uwe
źródło
Odnieś się do tego .
unrealsoul007

Odpowiedzi:

100
git log --name-status -2

Pokaże nazwy plików, które zmieniły się w ciągu ostatnich dwóch zatwierdzeń.

git log -p -2

Pokaże ci same zmiany.

Zanim pociągniesz,

git fetch
git log --name-status origin/master..

Pokaże Ci, jakie zatwierdzenia zamierzasz pobrać, wraz z nazwami plików.

Wayne Conrad
źródło
69

Przed pociągnięciem

Możesz przeglądać zmiany, jak mówi @iblue, z a fetchi diffprzed scaleniem:

$ git fetch
$ git diff master...origin/master

Zwróć uwagę na potrójną kropkę, która oznacza różnicę w stosunku do wspólnego rodzica i pochodzenia / mastera (zatwierdzenia zaznaczone xponiżej):

SP---o---o [master]
  \
   x---x [origin/master]

Zaraz po szarpnięciu

Pierwsza linia w danych wyjściowych polecenia pull wygląda następująco:

$ git pull
Updating 37b431a..b2615b4
...

Możesz wtedy po prostu zrobić:

$ git diff 37b431a..b2615b4

Lub jakiekolwiek inne polecenie:

$ git log --name-status 37b431a..b2615b4

Później

Jeśli minęło trochę czasu od wyciągnięcia i chcesz wiedzieć, jakie zmiany zostały wprowadzone przez ostatnie pociągnięcie, możesz to sprawdzić za pomocą:

$ git reflog | grep -A1 pull | head -2

który pokaże hash po ściągnięciu, a następnie hash przed ściągnięciem:

b2615b4 HEAD@{0}: pull : Fast-forward
37b431a HEAD@{1}: checkout: moving from v6.1 to master

Następnie możesz zrobić to samo z tymi dwoma hashami:

git diff 37b431a..b2615b4
quornian
źródło
3
To jedyna odpowiedź, która pozwala sprawdzić, które pliki zmieniły się podczas ostatniego ściągania, gdy nie pamiętasz, ile zatwierdzeń zostało ściągniętych w tym czasie.
kremuwa
24

Ponieważ git pulljest to tylko skrót do git fetchi git merge, możesz git fetchpobierać gałęzie ze źródła, a następnie wyświetlać różnice przed scaleniem. Lubię to:

git fetch                      # Load changes from remote server
git diff master origin/master  # Show differences
git merge origin/master        # Merge remote changes with local changes

Jeśli używasz innej gałęzi niż master , powinieneś oczywiście zmienić nazwy gałęzi w powyższych poleceniach.

iblue
źródło
1
`` git diff --name-only master origin / master [ścieżka] ``
jiacheo
10

Możesz porównać pobraną zawartość ze źródłami bezpośrednio poprzedniego zatwierdzenia przez,

git diff branch_name@{1}

na przykład:

git diff master@{1}

Aby porównać ze źródłami n zatwierdzeń za,

git diff branch_name@{n}
Kasun
źródło
3
To jest dobra odpowiedź, ale wyjaśnienie jest niepoprawne: „Do porównania ze źródłami, za którymi n zatwierdza się” . @{n}Składnia faktycznie oznacza nthpoprzednią pozycję oddziału / głowy. Na przykład, jeżeli nastąpiły 10 commity ponieważ ostatni raz zrobiłeś ciągnąć, master@{1}by odnieść się do wcześniejszej pozycji o master, czyli 10 commity przed. Dlatego używanie @{n}jest przydatne do sprawdzania zmian po ściągnięciu.
wisbucky
To jest odpowiedź, której szukałem! Dzięki za wyjaśnienie @wisbucky
tamerlaha
5

Możesz sprawdzić, co się zmienia, pchając i ciągnąc za to ...

git log --stat
Sandip Karanjekar
źródło