Ответ 1
Это действительно существует, но на самом деле это функция git log
:
git log -p [--follow] [-1] <path>
Обратите внимание, что -p
также может использоваться для отображения встроенного diff из одной фиксации:
git log -p -1 <commit>
Используемые опции:
-
-p
(также-u
или--patch
) скрыт deeeeeeeep в man-страницеgit-log
и на самом деле является опцией отображения дляgit-diff
. При использовании сlog
на самом деле отображается патч, который будет сгенерирован для каждого фиксации вместе с информацией о фиксации, и скрывает коммиты, которые не касаются указанного<path>
. (Это поведение описано в параграфе--full-diff
, что приводит к отображению полного разграничения каждой фиксации.) -
-1
показывает только самое последнее изменение указанного файла (-n 1
можно использовать вместо-1
); в противном случае отображаются все ненулевые различия этого файла. -
--follow
требуется, чтобы увидеть изменения, произошедшие до переименования.
Насколько я могу судить, это единственный способ сразу увидеть последний набор изменений, внесенных в файл, не используя git log
(или аналогичный), чтобы либо подсчитать количество промежуточных ревизий, либо определить хэш совершить.
Чтобы увидеть изменения в старых версиях, просто просмотрите журнал или укажите фиксацию или тег, из которых следует запустить журнал. (Конечно, указание фиксации или тега возвращает вам исходную проблему определения того, что такое правильная фиксация или тег.)
Кредит, при котором должен быть предоставлен кредит:
- Я обнаружил
log -p
благодаря этому ответу. - Кредит FranciscoPuga и этот ответ для показа мне опции
--follow
. - Кредит ChrisBetti за упоминание опции
-n 1
и atatko для обозначения варианта-1
. - Благодарим sweaver2112 за то, что я действительно прочитал документацию и выяснил, что
-p
означает "семантически".