如何在 Git 中查看文件历史记录?
Posted
技术标签:
【中文标题】如何在 Git 中查看文件历史记录?【英文标题】:How can I view file history in Git? 【发布时间】:2010-12-19 15:39:06 【问题描述】:使用 Subversion,我可以使用 TortoiseSVN 查看文件的历史记录/日志。
如何使用 Git 做到这一点?
我只是在寻找特定文件的历史记录,然后能够比较不同的版本。
【问题讨论】:
【参考方案1】:您似乎想要git diff 和/或git log。另请查看gitk:
gitk path/to/file
git diff path/to/file
git log path/to/file
【讨论】:
这是对 gitk 的另一个认可,它提供了一种浏览 git repo 中单个文件的所有快照的好方法。 默认情况下 gitk 显示 diff 加上 10 行上下文,但是如果你想查看整个文件的快照怎么办?只需将“上下文行”设置为一个较大的值(例如 100000)。然后,您可以在提交之间来回切换,并在不同的时间点查看整个文件。 (您也可以在文件中搜索。) gitk 在 Windows 上工作吗?如果可以,需要什么环境?【参考方案2】:您可以使用git-diff 或git-log。
【讨论】:
【参考方案3】:使用git log
查看提交历史。每个提交都有一个关联的修订说明符,它是一个哈希键(例如 14b8d0982044b0c49f7a855e396206ee65c0e787
和 b410ad4619d296f9d37f0db3d0ff5b9066838b39
)。要查看两个不同提交之间的差异,请将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 log
或git whatchanged
:
# 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
【讨论】:
感谢 -p 提示,这对于查找哪些修订涉及一些代码非常有用。【参考方案4】:您也可以使用tig 来构建一个不错的、基于ncurses 的 Git 存储库浏览器。查看文件的历史记录:
tig path/to/file
【讨论】:
【参考方案5】:许多 Git 历史浏览器,包括 git log
(和 'git log --graph')、gitk(在 Tcl/Tk 中,Git 的一部分)、QGit(在 Qt 中)、tig(到 Git 的文本模式接口, using ncurses), Giggle (in GTK+), TortoiseGit 和 git-cheetah 支持路径限制(例如,gitk path/to/file
)。
【讨论】:
@RobertVuković 我知道这是一个老问题......但请参阅下面的答案!【参考方案6】:当然,如果你想要尽可能接近 TortoiseSVN 的东西,你可以使用TortoiseGit。
【讨论】:
除了 TortoiseSvn shell 扩展包含一个显示单个文件历史的命令,而 TortoiseGit 没有。【参考方案7】:我喜欢使用 gitk name_of_file
这显示了每次提交时文件发生的更改的漂亮列表,而不是显示所有文件的更改。更容易追踪发生的事情。
【讨论】:
【参考方案8】:TortoiseGit 还提供了command line tool 来查看文件的历史记录。使用PowerShell:
C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
【讨论】:
【参考方案9】:我最喜欢的是git log -p <filename>
,它会为您提供给定文件的所有提交的历史记录以及每次提交的差异。
【讨论】:
【参考方案10】:git log --all -- path/to/file
应该可以工作
【讨论】:
我的回答中没有链接@ineersa 这应该是最佳答案。我不喜欢使用蹩脚的 gui 工具 你能详细说明你的答案吗?例如,为什么需要选项--all
?它应该做什么? (但没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的。)
@PeterMortensen 在此处查看文档:git-scm.com/docs/git-log#Documentation/git-log.txt---all以上是关于如何在 Git 中查看文件历史记录?的主要内容,如果未能解决你的问题,请参考以下文章