Пошагово просматривайте историю файла в git;похоже на замедленную съемку p4v - PullRequest
40 голосов
/ 06 октября 2011

Я ищу инструмент, который поможет при проверке истории файла. В частности, я хочу просмотреть все содержимое файла, но иметь возможность шагать назад и вперед во времени. Дополнительная радость для украшений, указывающих разницу с предыдущей версией или какой-либо другой указанной версией.

В настоящее время я использую git blame и могу видеть, какие изменения повлияли на каждую текущую строку. Затем я должен перезапустить средство просмотра этого файла с определенным коммитом. Это трудоемкий процесс, и если инструмент уже автоматизирует это, я бы с удовольствием его использовал!

Представление в режиме покадровой съемки от Perforce - лучший на сегодняшний день инструмент для этой задачи.

Ответы [ 9 ]

13 голосов
/ 06 октября 2011

gitk -- filename должен делать то, что вы хотите, если вы поднимаете контекстные строки в середине и прокручиваете ревизии вверх и вниз.

9 голосов
/ 24 мая 2015

Вот инструмент Git Time-Lapse View, который я написал на Java:

https://github.com/JonathanAquino/git-time-lapse-view

enter image description here

8 голосов
/ 08 марта 2013

Tig , интерфейс текстового режима для git, предлагает представление вины, которое предлагает некоторые из этих функций:

  • Шаг назад во времени для фиксации данной строки ( b key).
  • Шаг назад к родительскому коммиту данной строки (, key).
  • Возвращение назад во времени к виду, в котором вы находились ранее ( <</kbd> ключ).

Не сохраняет местоположение просмотра при переходе к родительскому коммиту(похоже при использовании коммита строки).

7 голосов
/ 16 мая 2014

Git GUI винить вариант, хотя это не так хорошо.

Пример для gc_storage от Ansible:

git gui blame --line=155 library/cloud/gc_storage

git gui blame --line=155 library/cloud/gc_storage

Щелкните правой кнопкой мыши по строке и выберите «Обвинить родительский коммит», чтобы вернуться назад во времени, вернувшись к более поздним изменениям со стрелкой истории просмотра в верхнем левом углу.

4 голосов
/ 05 апреля 2013

Если вы используете vim, плагин git-time-lapse также может вам помочь.

Это позволяет вам перемещаться по истории для файла, представляя каждый коммит в форме vimdiff, с сообщением о коммите в отдельном всплит ниже.

2 голосов
/ 06 октября 2011

Вы также можете использовать что-то вроде github, если хотите - его представление истории для конкретного файла показывает краткий обзор того, когда и кем редактировался каждый файл, и дает вам удобные ссылки для просмотра различий этого файла для этого файла.commit, текущая версия файла на этом коммите и т. д.

2 голосов
/ 06 октября 2011

У меня есть Perl-скрипт (слишком большой и слишком общий, чтобы публиковать его в качестве ответа на этот вопрос), который собирает копию каждой ревизии указанного файла в git.(Это также работает с RCS и CVS).

РЕДАКТИРОВАТЬ: Я наконец-то дошел до выпуская его на Github .

Ядроэто (псевдокод):

  • Выполнить git log --date=raw -- filename
  • Искать выходные данные для commit и Date: строк.
  • Для каждогоcommit-id:
    • Run git show commit-id ./filename > target-filename

Целевое имя файла создается из некоторой комбинации commit-id, timestamp и / илипоследовательный индекс.

Результатом может быть, например, набор файлов, таких как:

foo__001.txt
foo__002.txt
foo__003.txt

, где каждый является версией foo.txt из репозитория git.Затем я могу просмотреть каждый файл и / или различные его версии.

Это не дает вам все, о чем вы просите, но это должно стать хорошим началом.

1 голос
/ 30 июня 2019

Попробуйте https://github.com/pomber/git-history, который показывает полный файл с прекрасной анимацией вставки при перемещении по горизонтальной временной шкале:

demo gif

Вам даже не нужно устанавливать его, просто измените домен в любом URL-адресе файла Github!

Слабые стороны на момент написания:

  • Нет указания, где произошли изменения за пределами видового экрана, вы должны знать, чтобы прокрутить до региона, который будет меняться.
  • Небольшие изменения в строке трудно увидеть, так как вся строка заменяется. Нет способа увидеть одну и ту же линию до / после вертикальной укладки, как в «унифицированном diff». https://github.com/pomber/git-history/issues/26, https://github.com/pomber/git-history/issues/22 Тем не менее, вы можете нажать кнопку commit, чтобы перейти к полной версии github.
0 голосов
/ 22 октября 2015

Если вы используете Visual Studio, CodeLineage хорош.

https://visualstudiogallery.msdn.microsoft.com/bb3d22aa-29bf-41e1-acc9-92482bee4646

Мне нравится, что Git Time-Lapse от Jonathan Aquino показывает вам комментарий коммита, но CodeLineage хорош, потому что он интегрируется в Visual Studio и вы можете выбрать две ревизии, которые вы сравниваете, вместо того, чтобы просто сравнивать каждую ревизию с предыдущей пересмотр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...