145

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

我怎样才能用 Git 做到这一点?

我只是在寻找特定文件的历史记录,然后能够比较不同的版本。

4

10 回答 10

171

用于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
于 2009-11-23T21:39:18.910 回答
110

看起来你想要git diff和/或git log。另请查看gitk

gitk path/to/file
git diff path/to/file
git log path/to/file
于 2009-11-23T21:20:14.627 回答
36

我喜欢用gitk name_of_file

这显示了每次提交时文件发生的更改的一个很好的列表,而不是显示对所有文件的更改。更容易追踪发生的事情。

于 2012-08-27T21:30:50.040 回答
35

我最喜欢的是git log -p <filename>,它将为您提供给定文件的所有提交的历史记录以及每个提交的差异。

于 2015-05-19T04:56:05.050 回答
31

您还可以将tig用作一个不错的、基于ncurses的 Git 存储库浏览器。查看文件的历史记录:

tig path/to/file
于 2009-11-23T23:19:30.537 回答
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)。

于 2009-11-23T23:46:30.497 回答
4

当然,如果你想要尽可能接近 TortoiseSVN 的东西,你可以使用TortoiseGit

于 2009-11-23T23:54:02.277 回答
4

git log --all -- path/to/file应该管用

于 2015-12-03T13:03:26.243 回答
2

您可以使用git-diffgit-log

于 2009-11-23T21:20:32.613 回答
2

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

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
于 2015-01-23T18:27:55.447 回答