Помимо написания псевдонима или сценария, есть ли более короткая команда для получения diff для конкретного коммита?
git diff 15dc8^..15dc8
Если вы дадите только один идентификатор фиксации git diff 15dc8
, он будет отличаться от того, который зафиксирован для HEAD.
Ответы:
Использование
git show $COMMIT
. Он покажет вам сообщение в журнале для коммита и различия в этом конкретном коммите.источник
Использование:
как описано в следующем фрагменте man- страницы git-rev-parse (1) (или в современной man-странице git gitrevisions (7) ):
Это означает, что вы можете использовать его
15dc8^!
как сокращенное обозначение в15dc8^..15dc8
любом месте git, где требуются изменения. Для команды diffgit diff 15dc8^..15dc8
это понимается какgit diff 15dc8^ 15dc8
, что означает разницу между родителем commit (15dc8^
) и commit (15dc8
).Примечание : описание в
git-rev-parse(1)
man-странице говорит о диапазонах ревизий , где он должен работать и для фиксации слияния, с более чем одним родителем. Тогдаr1^!
"r1 --not r1^@
" то есть "r1 ^r1^1 ^r1^2 ...
"Кроме того, вы можете использовать,
git show COMMIT
чтобы получить описание фиксации и diff для фиксации. Если вы хотите только diff, вы можете использоватьgit diff-tree -p COMMIT
источник
^!
Родительские сокращенное обозначение работает должным образом с difftool для нормальных фиксаций , но разница сторнируется для слияния фиксаций. Почему так?Если вы знаете, как далеко назад, вы можете попробовать что-то вроде:
Приор совершает работу примерно так:
Существует множество способов указать коммиты:
Смотрите эту страницу для деталей .
источник
Как указывает @mipadi, вы можете использовать
git show $COMMIT
, но это также показывает некоторые заголовки и сообщение фиксации. Если вы хотите прямой дифференциал, используйтеgit show --pretty=format:%b $COMMIT
.Это, очевидно, не очень короткая рука, поэтому я держу этот псевдоним в моем .gitconfig
Это позволяет мне использовать
git sd $COMMIT
для показа различий .источник
Многие из упомянутых примеров (например
git diff 15dc8^!
, илиgit diff 15dc8^..15dc8
) не работают, если вы используете zsh и имеетеextendedglob
набор опций. Вы можете исправить это одним из следующих трех способов:unsetopt extendedglob
(и / или удалить его из .zshrc)setopt NO_NOMATCH
(и / или установите его в .zshrc)избегать кареты и стучать каждый раз с обратной косой чертой, например
git diff 15dc8\^\!
источник
~ 1 означает 'родитель', ~ 2 'дедушка и т.д.
источник
Решение Павла выше сделало то, на что я надеялся.
Кроме того, полезно добавить псевдонимы, такие как упомянутые hobs, если вы поместите следующее в раздел [alias] вашего файла ~ / .gitconfig, вы можете использовать сокращение для просмотра различий между головой и предыдущим.
Затем, запустив $ git diff-last, вы получите ваш результат. Обратите внимание, что это также будет включать в себя любые изменения, которые вы еще не зафиксировали, а также разницу между фиксациями. Если вы хотите игнорировать изменения, которые вы еще не зафиксировали, вы можете использовать diff, чтобы сравнить HEAD с его родителем напрямую:
источник
Использует псевдонимы, поэтому не дает точного ответа на ваш вопрос, но я считаю, что они полезны для выполнения ваших намерений ...
источник