Как увидеть изменения в git commit?
когда я делаю git diff COMMIT
Я вижу изменения между этой фиксацией и HEAD (насколько я знаю), но я хотел бы видеть изменения, которые были сделаны этой единственной фиксацией.
Я не нашел никаких очевидных опций в diff / log, которые дадут мне этот вывод.
16 ответов
чтобы увидеть разницу для конкретного COMMIT
хэш:
git diff COMMIT~ COMMIT
покажет вам разницу между этим COMMIT
'предок и COMMIT
. См. man-страницы для git diff для получения подробной информации о команде и gitrevisions о ~
нотация и ее друзья.
кроме того, git show COMMIT
сделает что-то очень похожее. (Данные фиксации, включая ее diff-но не для коммитов слияния.) См.git показать man-страницы.
как говорилось в "Стенография для diff git commit со своим родителем?", вы также можете использовать git diff
С:
git diff COMMIT^!
или
git diff-tree -p COMMIT
С git show вам нужно будет (чтобы сосредоточиться только на diff) сделать:
git show --color --pretty=format:%b $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>
используйте 3-й в середине:
git diff [options] <parent-commit> <commit>
также с той же справочной страницы, внизу, в примеры:
$ git diff HEAD^ HEAD <3>
сравните версию перед последней фиксацией и последней фиксацией.
По общему признанию, это сформулировано немного запутанно, это было бы менее запутанным, как
сравнить самую последнюю фиксацию с фиксацией перед ним.
следующее, кажется, делает работу; я использую его, чтобы показать, что было принесено слиянием.
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git difftool COMMIT^ <commit hash>
также возможно, если вы настроили свой difftool.
см. здесь как настроить difftool в деталях Или на странице руководства здесь
дополнительно вы можете использовать git diff-tree --no-commit-id --name-only -r <commit hash>
чтобы увидеть, какие файлы были изменены / зафиксированы в хэше фиксации
git show <commit_sha>
Это покажет вам, что именно в этой фиксации. Я думаю, вы можете сделать диапазон, просто поместив пространство между двумя shas фиксации.
git show <beginning_sha> <ending_sha>
что довольно полезно, если вы перебазирования часто, потому что ваша функция регистрирует все подряд.
чтобы увидеть автора и время с помощью commit use git show COMMIT
. Что приведет к чему-то вроде этого:
commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
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
Я запускаю git версии 2.6.1.окна.1 в Windows 10, поэтому мне нужна была небольшая модификация ответа Невика (Тильда вместо каретки):
git diff COMMIT~ COMMIT
другой вариант-процитировать каретку:
git diff "COMMIT^" COMMIT
можно использовать git diff HEAD HEAD^1
чтобы увидеть разницу с родительской фиксацией.
Если вы хотите видеть только список файлов, добавьте .
эта команда получит вам родительский commit-hash git:
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 <souparno.majumder@gmail.com>
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 <souparno.majumder@gmail.com>
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