it-swarm.com.ru

Как увидеть изменения в коммите Git?

Когда я делаю git diff COMMIT, я вижу изменения между этим коммитом и HEAD (насколько я знаю), но я хотел бы увидеть изменения, которые были сделаны этим единственным коммитом.

Я не нашел никаких очевидных опций для diff/log, которые бы дали мне такой вывод.

1228
laktak

Чтобы увидеть различия для конкретного хеша COMMIT:

git diff COMMIT~ COMMIT покажет вам разницу между предком COMMIT и COMMIT. См. Справочные страницы для git diff для получения подробной информации о команде и gitrevisions о нотации ~ и ее друзьях.

Кроме того, git show COMMIT сделает что-то очень похожее. (Данные коммита, включая его diff - но не для коммитов слияния.) Смотрите man-страница git show .

1579
Nevik Rehnel

Как упомянуто в " Сокращение от diff для git commit с его родителем? ", вы также можете использовать git diff с:

git diff COMMIT^!

или же

git diff-tree -p COMMIT

С git show вам нужно (чтобы сосредоточиться только на diff) сделать:

git show --color --pretty=format:%b $COMMIT

Параметр COMMIT является commit-ish:

A объект коммита или объект , который может быть рекурсивно разыменован в объекте коммита. Ниже перечислены все коммиты: объект фиксации, объект тега , который указывает на объект фиксации, объект тега, который указывает на объект тега, который указывает на объект фиксации, и т.д.

Смотрите gitrevision "УКАЗАНИЯ ПЕРЕСМОТРОВ" для ссылки на коммит-иш.
См. Также " Что означает древовидность в Git? ".

432
VonC

Вы также можете попробовать этот простой способ:

git show <COMMIT>
271
Lakhan

git show показывает изменения, сделанные в последнем коммите.

Эквивалент git show HEAD.

git show HEAD~1 возвращает вас назад 1 коммит.

59
Adam Salma

Сначала получите идентификатор фиксации, используя,

git log #to list all

Или же

git log -p -1 #last one commit id

Скопируйте идентификатор фиксации.

Теперь мы используем два метода, чтобы вывести список изменений из определенного коммита,

Метод 1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

Метод 2:

git show commit_id
For example: git show 1c6a600a
28
Mohideen bin Mohammed
git show <commit_sha>

Это покажет вам, что находится в этом коммите. Я думаю, что вы можете сделать это, просто поместив пробел между двумя коммитами.

git show <beginning_sha> <ending_sha>

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

25
Iwnnay

Со страницы руководства для git-diff (1) :

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

Используйте третий в середине:

git diff [options] <parent-commit> <commit>

Также из той же справочной страницы, внизу, в раздел Примеры :

$ git diff HEAD^ HEAD      <3>

Сравните версию перед последним коммитом и последним коммитом.

По общему признанию это сформулировано немного запутанно, это было бы менее запутанно, поскольку

Сравните самый последний коммит с коммитом перед ним.

24
user456814

Следующее, кажется, делает работу; Я использую это, чтобы показать, что было внесено слиянием.

git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
20
MichaelMoser

Другая возможность:

git log -p COMMIT -1

11
John_West
git difftool COMMIT^ <commit hash>

также возможно, если вы настроили свой difftool.

Смотрите здесь, как настроить difftool Или страницу руководства здесь

Кроме того, вы можете использовать git diff-tree --no-commit-id --name-only -r <commit hash>, чтобы увидеть, какие файлы были изменены/зафиксированы в хеше Give commit

9
Chand Priyankara

Вы можете использовать git diff HEAD HEAD^1, чтобы увидеть разницу с родительским коммитом.

Если вы хотите видеть только список файлов, добавьте параметр --stat.

8
Irshu

Чтобы увидеть автора и время по фиксации, используйте git show COMMIT. Что приведет к чему-то вроде этого:

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <[email protected]>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'Origin/your-feature'

Если вы хотите увидеть, какие файлы были изменены, запустите следующее со значениями из строки слияния выше git diff --stat a2a2894 3a1ba8f.

Если вы хотите увидеть фактический diff, запустите git --stat a2a2894 3a1ba8f

6
Nikita G.

Мне нравится команда ниже, чтобы сравнить конкретный коммит и его последний коммит:

git diff <commit-hash>^-

Пример:

git diff cd1b3f485^-
5
starcwl

Я использую Git версии 2.6.1.windows.1 в Windows 10, поэтому мне нужно было немного изменить ответ Невика (тильда вместо каретки):

git diff COMMIT~ COMMIT

Другой вариант - процитировать карету:

git diff "COMMIT^" COMMIT
4
Juuso Ohtonen

Я обычно делаю:

git diff HEAD~1

Чтобы показать изменения, касающиеся последнего коммита. Если у вас больше коммитов, просто увеличьте число 1 до того, сколько коммитов diff вы хотите увидеть.

3
Alex

Для проверки полных изменений:

  git diff <commit_Id_1> <commit_Id_2>

Для проверки только измененных/добавленных/удаленных файлов:

  git diff <commit_Id_1> <commit_Id_2> --name-only

NOTE: Для проверки diff без фиксации между ними вам не нужно указывать идентификаторы коммитов.

3
bit_cracker007

Эта команда получит хэш родительского коммита Git:

git log -n 2 <commit-hash>

После этого git diff-tool <commit-hash> <parent-commit-hash>

Пример:

[email protected] ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <[email protected]>
Date:   Mon Jul 25 13:17:07 2016 +0530

CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.

commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <[email protected]>
Date:   Mon Jul 25 11:28:09 2016 +0530

The ratio of the height to width of the channel images are maintained.

После этого

git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
2
souparno majumder