Как сделать так, чтобы Git показывал историю версий файла - PullRequest
2 голосов
/ 07 марта 2011

В прошлом я был пользователем CVS, и хотя я считаю Git хорошей системой контроля версий, мне не хватает функции, которая была у меня в CVS. В частности, я хочу увидеть историю версий файла, например теги на нем. Как я могу сделать это в Git?

Ответы [ 3 ]

5 голосов
/ 07 марта 2011

В файлах git нет собственной истории. Проект в целом имеет историю. Таким образом, единственное, что вы можете попросить, это части истории, относящиеся к файлу, или, точнее, (поскольку не существует специальной концепции идентификации файла) к пути. Все команды показа истории принимают ограничитель пути. Как:

$ git log -- file
$ gitk HEAD -- file

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

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

Поскольку это ограничение по path , если файл был переименован, он не будет следовать. В конце концов, git не хранит никакой явной информации о переименованиях. Однако он может угадать переименования, и вы можете попросить log попытаться выполнить переименование с помощью --follow, например:

$ git log --follow -- file

Это работает только для одного файла, а не для каталога.

Другая опция ищет изменения, которые содержат определенный текст, что часто проще, если вы ищите, когда появляется какой-то код. Используйте опцию -S, чтобы войти как:

$ git log -Stext
3 голосов
/ 07 марта 2011

Ответ Рэйфа Кеттлера дает вам основы того, что вам нужно, но стоит немного углубиться. Во-первых, если ваш файл имеет то же имя, что и ветвь, вы должны добавить -- перед именем файла:

git log -p -- filename

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

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

Более подробную информацию о git log можно найти в документации или о некоторых других методах изучения истории конкретного файла в этом другом вопросе переполнения стека:

... который также предлагает графический браузер истории (например, gitk), которому может быть задан конкретный путь.

2 голосов
/ 07 марта 2011

Попробуйте это для размера:

git log -p filename

На терминале читать немного сложно, поэтому вы можете захотеть перенаправить его в файл и посмотреть его там.

...