如何让Git显示文件的版本历史记录

时间:2011-03-07 08:45:34

标签: git file tags version history

我过去一直是CVS用户,虽然我认为Git是一个很好的版本控制系统,但我错过了我在CVS中的功能。具体来说,我想查看文件的版本历史记录,例如其上的标记。我怎么能在Git中做到这一点?

4 个答案:

答案 0 :(得分:5)

在git文件中没有自己的历史记录。整个项目有一段历史。因此,您唯一可以要求的是与文件相关的历史部分,或者更确切地说(因为文件标识没有特殊的概念)。显示命令的所有历史记录都接受路径限制器。像:

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

--将修订与路径分开。在大多数情况下可以省略它,但如果名称也是有效的修订名称或者当前版本中不存在该文件,则可能需要它。

您也可以指定目录名称,在这种情况下列出该子树中所有文件的历史记录。

由于此限制为 path ,如果文件已重命名,则不会跟随。毕竟,git不存储任何有关重命名的显式信息。但是,它可以猜测重命名,您可以要求log尝试使用--follow重命名,例如:

$ git log --follow -- file

这仅适用于单个文件,而不适用于目录。

另一个选项是查找包含特定文本的更改,如果您在查找某些代码时,这通常更容易。使用-S选项记录如下:

$ git log -Stext

答案 1 :(得分:3)

Rafe Kettler's answer为您提供了所需内容,但值得进一步扩展。首先,如果您的文件与分支具有相同的名称,则应在文件名前添加--

git log -p -- filename

-p参数表示还显示该提交引入的该文件的更改。您提到您希望看到适用于该版本的任何标记 - 为此,您应该添加--decorate选项。

最后,如果该文件可能已在其历史记录中的某个位置重命名,或者从存储库中的其他位置复制到位,则应考虑添加--follow选项。

您可以在documentation中找到有关git log的更多信息,或者在此其他Stack Overflow问题中查看特定文件历史记录的其他方法:

...还建议可以给定特定路径的图形历史浏览器(例如gitk)。

答案 2 :(得分:2)

尝试使用此尺寸:

git log -p filename

在终端上阅读有点困难,因此您可能希望将其重定向到文件并在那里查看。

答案 3 :(得分:0)

我正在使用git版本2.23.0,如果您未使用其他选项或修订范围,则无需使用'-'在文件上显示历史记录。只需使用:

git log filename