Як побачити зміни коду після 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.