Подтвердить что ты не робот

Перейдите в историю файлов в git; аналогично p4v timelapse

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

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

Perforce timelapse view - лучший инструмент на сегодняшний день, который я видел для этой задачи.

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Ответ 4

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

  • Шаг назад во времени к фиксации данной строки (клавиша b).
  • Шаг назад к родительскому фиксации заданной строки (,).
  • Возврат вперед по времени к представлению, которое вы были ранее (<).

Он не сохраняет место просмотра при переходе на родительский фиксатор (кажется, когда используется фиксация строки).

Ответ 5

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

Он позволяет вам перемещаться по истории для файла, представляя каждую фиксацию в форме vimdiff, с сообщением фиксации в отдельном vsplit ниже.

Ответ 6

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

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

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

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

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

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

foo__001.txt
foo__002.txt
foo__003.txt

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

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

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

Попробуйте 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 diff.