使用 Git 版本控制查看文件的修改历史

3828

如何查看文件的完整变更历史记录以及具体修改内容?

git log -- [filename] 命令可以显示文件的提交历史,但如何查看文件的修改内容呢?


6
上面的链接(由Chris发布)已经失效。今天这个链接有效:https://git-scm.com/book/en/v2 - Cog
2
@chris:你所说的链接是什么?是在现已删除的评论中吗? - Peter Mortensen
27个回答

25

最近我发现了tig,并发现它非常有用。 有些情况下,我希望它能做A或B,但大部分时间它相当不错。

对于您的情况,tig <filename>可能是您要寻找的内容。

https://jonas.github.io/tig/


18

你也可以尝试这个方法,列出修改了文件特定部分的提交记录(在Git 1.8.4中实现)。

返回的结果将是更改了此特定部分的提交记录列表。命令:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

其中,upperLimit是文件的起始行号,lowerLimit是文件的结束行号。

更多详细信息请参见http://techpurohit.in/list-some-useful-git-commands


链接已经失效 - 域名 techpurohit.com 不再存在。 - Peter Mortensen
@PeterMortensen 你好,链接已被替换为存档链接。 - li ki

17
Sourcetree用户界面中,您可以通过在右键上下文菜单中选择“日志选定”选项来查找文件的历史记录:

Enter image description here

它将显示所有提交的历史记录。

这个GUI来自哪里? - colidyre
Sourcetree 用户界面。谢谢。 - savvyBrar
什么是Windows? - Emobe
@Emobe:你是什么意思?能详细说明一下吗?(这个截图似乎来自微软Windows。) - Peter Mortensen

15

我为了这个特定目的写了git-playback


pip install git-playback
git playback [filename]

这样做的好处在于既可以在命令行中显示结果(就像git log -p一样),同时又可以使用箭头键逐个浏览每个提交(就像gitk一样)。


14
或者: gitx -- <path/to/filename> 如果你正在使用GitX

2
由于某些原因,我的GitX打开时是空白的。 - IgorGanapolsky
@IgorGanapolsky 你必须确保你在 Git 仓库的根目录下。 - zdsbs

9

如果您想查看文件的完整历史记录,包括所有其他分支,请使用:

gitk --all <filename>

8

如果你正在使用Windows上的Git GUI

仓库菜单下,您可以使用可视化主分支历史记录

在顶部窗格中选择一个提交和右下角的文件,就可以在左下角看到该提交的差异。


3
这个回答如何回答这个问题? - jmbeck
3
OP没有明确指定命令行,并且从SourceSafe(这是一个GUI)转移,似乎值得指出,你可以在Windows上的Git GUI中做几乎与VSS相同的事情。 - cori

7
要获取特定文件的所有提交,请使用以下命令:

git rev-list HEAD --oneline 文件名


例如

git rev-list HEAD --oneline index.html

输出结果

7a2bb2f update_index_with_alias
6c03e56 update_changes
e867142 Revert "add_paragraph"

如果您想查看对文件所做的更改

git log -p 文件名

请参阅GIF动画图像git commits for specific files


7
使用优秀的Git Extensions,您可以进入文件仍然存在的历史记录中(如果已被删除,则只需转到HEAD),切换到文件树选项卡,在文件上单击鼠标右键并选择文件历史记录。默认情况下,它会跟随文件重命名,而Blame选项卡允许在给定版本中查看名称。它有一些小问题,比如在单击删除修订版时在View选项卡中显示fatal: Not a valid object name,但我可以忽略这个问题。 :-)

值得注意的是,这仅适用于Windows操作系统。 - Evan Hahn
3
@EvanHahn的说法不准确,通过Mono可以在Linux上使用GitExtension,我们在Ubuntu上使用它,并且非常满意。请参阅http://git-extensions-documentation.readthedocs.org/en/latest/getting_started.html。 - Shmil The Cat

6

SmartGit

  1. 在菜单中启用显示未更改的文件:视图/显示未更改的文件
  2. 右键单击该文件并选择“日志”或按“Ctrl-L”

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