Я хотів би перевірити будь-які зміни коду після виконання git pull. Наразі він просто показує мені, які файли змінюються. Як я можу побачити, який код змінився?
Відповіді:
git log --name-status -2
Покаже вам назви файлів, які змінилися за останні два коміти.
git log -p -2
Покаже вам самі зміни.
Перш ніж тягнути,
git fetch
git log --name-status origin/master..
Покаже вам, які комітети ви збираєтесь отримати, разом з іменами файлів.
Ви можете переглянути зміни, як каже @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
Оскільки 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 , вам слід, звичайно, змінити назви гілок у командах вище.
Ви можете порівняти витягнутий вміст із джерелами безпосередньо попереднього коміту,
git diff branch_name@{1}
наприклад:
git diff master@{1}
Для порівняння з джерелами n комітів позаду,
git diff branch_name@{n}
@{n}Синтаксис фактично означає nthпопереднє положення відвідних / голів. Наприклад, якщо було проведено 10 фіксацій , так як в останній раз ви зробили тягнути, master@{1}буде ставитися до попереднього стану в master, який знаходиться в 10 фіксацій раніше. Ось чому використання @{n}корисно для перевірки змін після витягування.
Ви можете перевірити, що можна змінити, натискаючи і тягнучи цим ...
git log --stat