Как показать, что сделал коммит?

266

Глупый путь, который я знаю:

git diff commit-number1 commit-number2

лучше?

Я имею в виду, я хочу знать сам commit1, я не хочу добавлять commit2 перед ним в качестве параметра.

Сэм Ляо
источник
14
Хотя «git show <commit>» является правильным решением, вы можете использовать «git diff <commit> ^!» чтобы получить различие между коммитом и его (первым) родителем. Смотрите man git-rev-parse (1) для подробностей.
Якуб Наребски
Реквизит @Jakub: git diff <commit>^!это ответ, ИМХО. Это то, что вы видите в коммит-представлении на github.com
Крис,

Ответы:

63

Имеет ли

$ git log -p

делать то, что вам нужно?

Посмотрите главу о Git Log в Git Community Book для большего количества примеров. (Или посмотрите документацию .)

Обновление: Как уже отмечали другие ( Jakub и Bombe ): хотя вышеприведенное работает, git show на самом деле является командой, предназначенной для выполнения именно того, о чем просили.

Марк ван Лент
источник
51

TL; DR

git show <commit>


Шоу

Чтобы показать, что коммит сделал со статистикой:

git show <commit> --stat

Журнал

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

git log -p <commit1> <commit2>

Что такое <commit>?

Каждый коммит имеет уникальный идентификатор, на который мы ссылаемся здесь <commit>. Уникальный идентификатор - это хэш SHA-1 - контрольная сумма содержимого, которое вы храните, плюс заголовок. #TMI

Если вы не знаете свое <commit>:

  1. git logдля просмотра фиксации истории

  2. Найдите коммит, который вам небезразличен.

Джеффри Хейл
источник
22

Я обнаружил, что "git show --stat" является лучшим из всех, он дает вам краткую сводку коммита, какие файлы вы добавили и изменили, не предоставляя вам кучу вещей, особенно если вы изменили много файлов ,

Харви Лин
источник
6

Это один из способов, который я знаю. С git, кажется, всегда есть несколько способов сделать это.

git log -p commit1 commit2
1800 ИНФОРМАЦИЯ
источник