Как увидеть изменения кода после 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
Quornian
источник
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

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

iblue
источник
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
5

Вы можете проверить, какие изменения произошли во время толкания и тяги, с помощью этого ...

git log --stat
Сандип Каранджекар
источник