Перейдите в историю файлов в git; аналогично p4v timelapse
Я ищу инструмент, который поможет при анализе истории файлов. В частности, я хочу просмотреть все содержимое файла, но иметь возможность шаг назад и вперед во времени. Дополнительная радость для украшений, указывающая отличие от предыдущего rev или некоторого другого указанного rev.
В настоящее время я использую git blame
и могу видеть, какие изменения повлияли на каждую текущую строку. Затем мне нужно перезапустить средство просмотра для этого файла с определенным фиксатором. Это трудоемко, и если инструмент уже автоматизирует это, я бы с удовольствием его использовал!
Perforce timelapse view - лучший инструмент на сегодняшний день, который я видел для этой задачи.
Ответы
Ответ 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
должен делать то, что вы хотите, если вы поднимаете линии контекста посередине и прокручиваете вверх и вниз по версиям.
Ответ 3
Вот инструмент Git Time-Lapse View, который я написал на Java:
https://github.com/JonathanAquino/git-time-lapse-view
![enter image description here]()
Ответ 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.