Как просмотреть историю файлов в Git?

133

С Subversion я мог использовать TortoiseSVN для просмотра истории / журнала файла.

Как я могу это сделать с помощью Git?

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

mrblah
источник

Ответы:

156

Используйте git logдля просмотра истории коммитов. Каждая фиксация имеет связанный спецификатор ревизии, который является хеш-ключом (например, 14b8d0982044b0c49f7a855e396206ee65c0e787и b410ad4619d296f9d37f0db3d0ff5b9066838b39). Чтобы увидеть разницу между двумя разными коммитами, используйте git diffпервые несколько символов спецификаторов ревизий обоих коммитов, например:

# diff between commits 14b8... and b410...
git diff 14b8..b410
# only include diff of specified files
git diff 14b8..b410 path/to/file/a path/to/file/b

Если вы хотите получить обзор всех различий, которые произошли от фиксации до фиксации, используйте git logили git whatchangedс опцией patch:

# include patch displays in the commit history
git log -p
git whatchanged -p
# only get history of those commits that touch specified paths
git log path/a path/b
git whatchanged path/c path/d
Кристиан
источник
7
Спасибо за подсказку -p, она очень полезна для определения того, какие версии требуют небольшого количества кода.
Кристофер Пикслей,
100

Похоже, вам нужен git diff и / или git log . Также проверьте gitk

gitk path/to/file
git diff path/to/file
git log path/to/file
baudtack
источник
3
Вот еще один намек на gitk, который предоставляет отличный способ просмотреть все снимки одного файла в репозитории git.
Ray Brown
1
По умолчанию gitk показывает разницу плюс 10 строк контекста, но что, если вы хотите увидеть снимок всего файла? Просто установите «Строки контекста» на большое значение (например, 100000). Затем вы можете переключаться между коммитами и просматривать весь файл в разные моменты времени. (Вы также можете выполнить поиск в файле.)
antinome
35

Мне нравится использовать gitk name_of_file

Это показывает хороший список изменений, которые произошли с файлом при каждой фиксации, вместо отображения изменений во всех файлах. Облегчает отслеживание того, что произошло.

Густаво Литовский
источник
30

вы также можете использовать tig для красивого браузера репозитория git на основе ncurses. Чтобы просмотреть историю файла:

tig path/to/file
user217433
источник
29

Мне больше всего нравится git log -p <filename>, что дает вам историю всех коммитов данного файла, а также различия для каждого коммита.

прерыватель
источник
11

Многие браузеры истории Git, включая git log(и 'git log --graph'), gitk (в Tcl / Tk, часть Git), QGit (в Qt), tig (интерфейс текстового режима для git, используя ncurses), Giggle (в GTK +), TortoiseGit и git-cheetah поддерживают ограничение пути (например gitk path/to/file).

Якуб Наребски
источник
@ RobertVuković Я знаю, что это старый вопрос ... но посмотрите мой ответ ниже!
brianc
4

Конечно, если вам нужно что-то как можно ближе к TortoiseSVN, вы можете просто использовать TortoiseGit .

Йорг В. Миттаг
источник
За исключением того, что расширения оболочки TortoiseSvn содержат команду для отображения истории одного файла, а TortoiseGit - нет.
Neutrino
3

git log --all -- path/to/file должно сработать

Эдсон Медина
источник
В моем ответе нет ссылки @ineersa
Эдсон Медина
1
Это должен быть главный ответ. Я не люблю использовать дрянные инструменты графического интерфейса
Grobi
2

TortoiseGit также предоставляет инструмент командной строки для просмотра истории файла. Используя PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
brianc
источник