Как увидеть изменения кода после 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, с помощью fetchи diffперед объединением:

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

Обратите внимание на тройную точку, которая означает разницу с общим родителем и источником / мастером (коммиты отмечены xниже):

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

Сразу после тяги

Самая первая строка в выводе pull выглядит так:

$ 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

Если вы работаете в ветке, отличной от основной , вы, конечно, должны изменить имена веток в приведенных выше командах.


1
`` git diff --name-only master origin / master [path] `` `
— jiacheo

10

Вы можете сравнить извлеченное содержимое с источниками непосредственно предыдущей фиксации,

git diff branch_name@{1}

например:

git diff master@{1}

Для сравнения с источниками, за которые n коммитов,

git diff branch_name@{n}

2
Это хороший ответ, но объяснение неверно: «Для сравнения с исходными кодами, которые остались позади» . @{n}Синтаксис фактически означает nthпредыдущее положение отводных / голов. Например, если было проведено 10 фиксаций , так как в последний раз вы сделали тянуть, master@{1}будет относиться к предыдущему положению в master, который находится в 10 фиксаций ранее. Вот почему использование @{n}полезно для проверки изменений после вытягивания.
— wisbucky

Это ответ, который я искал! Спасибо за объяснение @wisbucky
— tamerlaha

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.