如何在Git中查看文件历史记录?


132

通过Subversion,我可以使用TortoiseSVN来查看文件的历史记录/日志。

如何使用Git做到这一点?

只需查找特定文件的历史记录,然后即可比较不同版本。

Answers:


156

使用git log查看提交历史。每个提交都具有一个关联的修订说明符,该规范说明符是一个哈希键(例如14b8d0982044b0c49f7a855e396206ee65c0e787b410ad4619d296f9d37f0db3d0ff5b9066838b39)。要查看两个不同提交之间的差异,请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 loggit 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技巧,这对于查找哪些修订涉及一些代码非常有用。
Christopher Pickslay 2014年

100

看起来你想要git diff和/或git log。还检查gitk

gitk path/to/file
git diff path/to/file
git log path/to/file

3
这是gitk的另一个点头,它提供了一种浏览git repo中单个文件的所有快照的好方法。
雷·布朗

1
默认情况下,gitk显示diff加10行上下文,但是如果您想查看整个文件的快照怎么办?只需将“上下文线”设置为较大的值(例如100000)。然后,您可以在提交之间来回切换,并在不同的时间点查看整个文件。(您也可以在文件中搜索。)
antinome 2014年

35

我喜欢使用gitk name_of_file

这显示了每次提交时文件发生的更改的完整列表,而不是显示所有文件的更改。使跟踪发生的事情变得更加容易。


30

您还可以将tig用于基于ncurses的漂亮git存储库浏览器。要查看文件的历史记录:

tig path/to/file

28

我最喜欢的是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 Shell扩展包含一个用于显示单个文件历史记录的命令,而TortoiseGit则不。
Neutrino



2

TortoiseGit还提供了一个命令行工具来查看文件的历史记录。使用PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.