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