如何在Git中跟踪单个文件的历史记录并查看完整的提交记录?

19

我有一个拥有大约两年历史记录的Git仓库。有一个单独的文件,我想找出其中所有的提交记录,并且对于每个提交记录,找到一起提交的其他文件。假设该文件名为file.txt。我可以使用以下命令在gitk中查看该文件的提交记录:

gitk file.txt

我确实获得了每个提交。然而,在gitk中浏览该树只会显示对file.txt所做的更改。我想看到在该提交中更改的其他文件。我可以复制粘贴每个提交的SHA1并显示它,但与此文件相关的提交有超过一百个。

我注意到屏幕右下角的“注释”部分为空(仅显示文本“注释”)。也许文件列表可以显示在那里?


有关EOL的其他信息,请参见http://unix.stackexchange.com/questions/10277/ignore-whitespaces-changes-in-all-git-commands。 - Thorbjørn Ravn Andersen
3个回答

16
在命令行中,
git log -p --full-diff file.txt

将会输出你想要的内容。

如果你必须在gitk中看到它,不带任何参数调用它,在 "touching path" file.txt 中找到提交(commit),包含该文件的提交将被加粗显示。你可以使用 "up" 和 "down" 按钮遍历它。


太好了!正是我所需要的。非常感谢(很抱歉我只能点赞和接受它)。 - Milan Babuškov

11
您可以在gitk中实际上拥有“--full-diff”功能,但不能直接从命令行中使用。只需按照以下步骤进行操作:
  • 以通常的方式启动gitk,例如: gitk file.txt
  • 从菜单中选择“查看 -> 编辑视图...”。验证您正在编辑“命令行”视图。
  • 在“用于git日志的其他参数”旁边的编辑框中键入--full-diff
  • 点击“应用”或按[F5]。
这样应该就可以了。我不明白为什么gitk不允许您从命令行使用此选项,因为它是一个非常有用的选项。

4

这是邮件列表中一个很早就有的解决方案,时间可以回溯到2008年:

尝试在首选项菜单中关闭“限制差异到列出的路径”选项(或将“set limitdiffs 0”添加到您的~/.gitk文件中)。


这是我唯一有效的解决方案。~/.gitk 不起作用,但在首选项中更改可以正常工作。 - nayana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接