Как увидеть изменения в коммите Git?
Когда я делаю git diff COMMIT
я вижу изменения между этим коммитом и HEAD (насколько я знаю), но я хотел бы видеть изменения, которые были сделаны этим единственным коммитом.
Я не нашел никаких очевидных опций в diff
/log
, которые бы дали мне такой вывод.
Ответы
Ответ 1
Чтобы увидеть различие для конкретного хеша COMMIT
:
git diff COMMIT~ COMMIT
покажет вам разницу между этим предком COMMIT
и COMMIT
. Обратитесь к страницам для мерзавца дифференциалу для получения подробной информации о команде и gitrevisions о ~
нотации и ее друзьях.
В качестве альтернативы, git show COMMIT
сделает нечто очень похожее. (Данные коммита, в том числе его diff - но не для коммитов слияния.) Смотрите страницу руководства git show.
Ответ 2
Как указано в "Сокращение для разграничения git с его родителем?", вы также можете использовать git diff
с:
git diff COMMIT^!
или
git diff-tree -p COMMIT
С помощью git show, вам нужно (чтобы сосредоточиться на различии отдельно):
git show --color --pretty=format:%b $COMMIT
Параметр COMMIT
- commit-ish:
A объект фиксации или object, который могут быть рекурсивно разыменованы в объект фиксации. Ниже перечислены все commit-ishes: объект commit, объект тега который указывает на объект фиксации, объект тега, который указывает на объект тега который указывает на объект фиксации и т.д.
См. gitrevision" УКАЗАТЬ ПЕРЕСМОТРЫ для ссылки на commit-ish.
См. Также "Что означает древовидное значение в Git?".
Ответ 3
Вы также можете попробовать этот простой способ:
git show <COMMIT>
Ответ 4
git show
показывает изменения, внесенные в последнее коммит.
Эквивалентно git show HEAD
.
git show HEAD~1
возвращает вас назад 1 commit.
Ответ 5
Сначала получите идентификатор фиксации, используя,
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
Ответ 6
Из справочной страницы 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>
Сравните версию до последней фиксации и последней фиксации.
По общему признанию, это немного смутно, это было бы менее запутанным, поскольку
Сравните последнюю фиксацию с фиксацией перед ней.
Ответ 7
git show <commit_sha>
Это покажет вам, что в этом коммите. Я думаю, что вы можете сделать это, просто поместив пробел между двумя коммитами.
git show <beginning_sha> <ending_sha>
что очень полезно, если вы часто перепроверяете, потому что ваши журналы функций будут все в ряд.
Ответ 8
Следующее, кажется, делает работу; Я использую это, чтобы показать, что было внесено слиянием.
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
Ответ 9
Другая возможность:
git log -p COMMIT -1
Ответ 10
git difftool COMMIT^ <commit hash>
также возможно, если вы настроили свой diffftool.
Смотрите здесь, как настроить diffftool
Или справочную страницу здесь
Кроме того, вы можете использовать git diff-tree --no-commit-id --name-only -r <commit hash>
, чтобы узнать, какие файлы были изменены/зафиксированы в хэше команды commit commit
Ответ 11
Вы можете использовать git diff HEAD HEAD^1
чтобы увидеть разницу с родительским коммитом.
Если вы хотите видеть только список файлов, добавьте --stat
.
Ответ 12
Чтобы просмотреть автора и время, используйте commit 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'
Если вы хотите увидеть, какие файлы были изменены, запустите следующее со значениями из строки Merge выше git diff --stat a2a2894 3a1ba8f
.
Если вы хотите увидеть фактический diff, запустите git --stat a2a2894 3a1ba8f
Ответ 13
Мне нравится команда ниже, чтобы сравнить конкретный коммит и его последний коммит:
git diff <commit-hash>^-
Пример:
git diff cd1b3f485^-
Ответ 14
Я использую Git версии 2.6.1.windows.1 в Windows 10, поэтому мне нужно было немного изменить ответ Nevik (тильда вместо каретки):
git diff COMMIT~ COMMIT
Другой вариант - процитировать карету:
git diff "COMMIT^" COMMIT
Ответ 15
Эта команда получит хэш родительского коммита 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
Ответ 16
Для проверки полных изменений:
git diff <commit_Id_1> <commit_Id_2>
Для проверки только измененных/добавленных/удаленных файлов:
git diff <commit_Id_1> <commit_Id_2> --name-only
ПРИМЕЧАНИЕ. Для проверки diff без фиксации между ними вам не нужно указывать идентификаторы коммитов.
Ответ 17
Я обычно делаю:
git diff HEAD~1
Чтобы показать изменения, касающиеся последнего коммита. Если у вас больше коммитов, просто увеличьте число 1 до того, сколько коммитов diff вы хотите увидеть.
Ответ 18
В случае проверки изменения источника в графическом представлении,
$gitk (Mention your commit id here)
например:
$gitk HEAD~1