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

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

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

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


person mrblah    schedule 23.11.2009    source источник


Ответы (10)


Используйте 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< /a> с опцией исправления:

# 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
person Christian    schedule 23.11.2009
comment
Спасибо за подсказку -p, это очень полезно для определения того, какие ревизии содержат немного кода. - person Christopher Pickslay; 21.03.2014

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

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

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

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

person Gustavo Litovsky    schedule 27.08.2012

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

person chopper    schedule 19.05.2015

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

tig path/to/file
person user217433    schedule 23.11.2009

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

person Jakub Narębski    schedule 23.11.2009
comment
@RobertVuković Я знаю, что это старый вопрос ... но смотрите мой ответ ниже! - person brianc; 23.01.2015

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

person Jörg W Mittag    schedule 23.11.2009
comment
За исключением того, что расширения оболочки TortoiseSvn содержат команду для отображения истории одного файла, а TortoiseGit — нет. - person Neutrino; 21.01.2020

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

person Edson Medina    schedule 03.12.2015
comment
В моем ответе нет ссылки @ineersa - person Edson Medina; 03.12.2015
comment
Это должен быть главный ответ. Я не люблю использовать дрянные инструменты графического интерфейса - person Grobi; 07.04.2020

git-diff или git-log ?

person vladikoff    schedule 23.11.2009

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

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
person brianc    schedule 23.01.2015