Як побачити зміни коду після git pull?


88

Я хотів би перевірити будь-які зміни коду після виконання git pull. Наразі він просто показує мені, які файли змінюються. Як я можу побачити, який код змінився?


Зверніться до цього .
unrealsoul007

Відповіді:


98
git log --name-status -2

Покаже вам назви файлів, які змінилися за останні два коміти.

git log -p -2

Покаже вам самі зміни.

Перш ніж тягнути,

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

Покаже вам, які комітети ви збираєтесь отримати, разом з іменами файлів.


68

Перед витягуванням

Ви можете переглянути зміни, як каже @iblue, із за допомогою a fetchта diffперед об’єднанням:

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

Зверніть увагу на потрійний період, що означає різницю щодо спільного батька та джерела / головного (коміти, позначені xнижче):

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

Відразу після тяги

Перший рядок у виведенні витягування виглядає так:

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

Потім ви можете просто зробити:

$ git diff 37b431a..b2615b4

Або будь-яка інша команда:

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

В подальшому

Якщо з вашого витягування минуло деякий час, і ви хочете знати, які зміни було внесено останнім витягуванням, ви можете переглянути це за допомогою:

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

який покаже хеш після витягування, а потім хеш перед витягуванням:

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

Потім ви можете зробити те саме з цими двома хешами:

git diff 37b431a..b2615b4

3
Це єдина відповідь, яка дозволяє перевірити, які файли змінилися під час останнього витягування, коли ви не пам’ятаєте, скільки комітів було витягнуто на той момент.
kremuwa

22

Оскільки git pullце просто ярлик для git fetchі git merge, ви можете запустити, git fetchщоб отримати гілки з початку, а потім показати відмінності перед об’єднанням. Подобається це:

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

Якщо ви працюєте на іншій гілці, ніж master , вам слід, звичайно, змінити назви гілок у командах вище.


1
`` `git diff - тільки ім'я майстер походження / майстер [шлях]` `
jiacheo

10

Ви можете порівняти витягнутий вміст із джерелами безпосередньо попереднього коміту,

git diff branch_name@{1}

наприклад:

git diff master@{1}

Для порівняння з джерелами n комітів позаду,

git diff branch_name@{n}

2
Це хороша відповідь, але пояснення неправильне: "Для порівняння з джерелами n виконує ззаду" . @{n}Синтаксис фактично означає nthпопереднє положення відвідних / голів. Наприклад, якщо було проведено 10 фіксацій , так як в останній раз ви зробили тягнути, master@{1}буде ставитися до попереднього стану в master, який знаходиться в 10 фіксацій раніше. Ось чому використання @{n}корисно для перевірки змін після витягування.
Wisbucky

Це відповідь, яку я шукав! Дякую за пояснення @wisbucky
tamerlaha

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.