过去我曾经是CVS用户,尽管我认为Git是一个很好的版本控制系统,但是我却缺少CVS中的功能。具体来说,我想查看文件的版本历史,例如文件上的标签。如何在Git中做到这一点?
在git文件中没有自己的历史记录。整个项目都有历史。因此,您唯一需要询问的是与文件相关的历史部分,或者(由于没有文件标识的特殊概念)与路径有关。所有显示命令的历史记录都接受路径限制器。喜欢:
$ git log -- file
$ gitk HEAD -- file
--
将修订版本与路径分开。您可以在大多数情况下忽略它,但是如果该名称也是有效的修订名称,或者该文件在当前版本中不存在,则可能需要省略它。
您也可以指定目录名称,在这种情况下,将列出该子树中所有文件的历史记录。
由于这受path的限制,如果文件被重命名,它将不会跟随。毕竟,git不存储有关重命名的任何显式信息。但是,它可以猜测重命名,您可以要求log
尝试使用--follow
跟随重命名,例如:
$ git log --follow -- file
这仅适用于单个文件,不适用于目录。
另一个选项正在寻找包含特定文本的更改,如果您要查找某些代码的来源,这通常会更容易。使用-S
选项进行日志记录:
$ git log -Stext
Rafe Kettler's answer为您提供了所需的基础知识,但值得扩展。首先,如果您的文件与分支名称相同,则应在文件名前添加--
:
git log -p -- filename
-p
参数表示还显示该提交所引起的对该文件的更改。您提到要查看适用于该版本的所有标签-为此,您应该添加--decorate
选项。
最后,如果该文件可能已在其历史记录中的某个位置重命名,或者已从存储库中的另一个位置复制到该位置,则应考虑添加--follow
选项。
您可以在git log
中找到有关documentation的更多信息,或在此另一个Stack Overflow问题中找到检查特定文件历史的其他方法:
...还建议可以提供特定路径的图形历史记录浏览器(例如gitk
)。
尝试使用此尺寸:
git log -p filename
在终端上阅读有点困难,因此您可能需要将其重定向到文件并在其中查看。
我使用的是git版本2.23.0,如果您未使用其他选项或修订范围,则无需使用'-'在文件上显示历史记录。只需使用:
git log filename