Как увидеть изменения в git commit?



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



Я не нашел никаких очевидных вариантов на diff/log, которые дадут мне этот вывод.

799   16  

16 ответов:

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

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

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

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

git diff COMMIT^!

или

git diff-tree -p COMMIT

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

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

The COMMIT параметр a commit-ish:

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

посмотреть gitrevision "указание ревизий" для ссылки на фиксацию.
См. также "что означает tree-ish в Git?".

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

git show <COMMIT>

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

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

git show HEAD~1 возвращает вам 1 фиксацию.

сначала получить идентификатор фиксации с помощью,

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

из man-страницы для 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>

сравнить версии до последней фиксации и последний коммит.

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

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

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

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

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

git log -p COMMIT -1

git difftool COMMIT^ <commit hash>

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

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

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

git show <commit_sha>

Это покажет вам, что именно в этой фиксации. Я думаю, что вы можете сделать это, просто поставив пробел между двумя совершать ШАС.

git show <beginning_sha> <ending_sha>

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

чтобы увидеть автора и время фиксации использовать 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.

если вы хотите увидеть фактическую разницу, запустите git --stat a2a2894 3a1ba8f

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

git diff COMMIT~ COMMIT

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

git diff "COMMIT^" COMMIT

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

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

эта команда даст вам git parent commit-hash:

git log -n 2 <commit-hash>

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

пример:

bonnie@bonnie ~/ $ 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

мне нравится следующая команда для сравнения конкретного коммита и его последнего коммита:

git diff <commit-hash>^-

пример:

git diff cd1b3f485^-

в случае проверки изменения источника в графическом представлении,

$gitk (Mention your commit id here)

например:

$gitk HEAD~1 

Comments

    Ничего не найдено.