如何用 Git 查看文件的历史版本

查看文件旧版本:git log -- <文件> 找到提交,git show <提交>:<路径> 直接输出内容;保存到本地用 git show <提交>:<路径> > 旧版本.txt;恢复用 git restore --source=<提交> <文件>。

最佳实践
Git 提交历史与版本恢复示意

看内容用 git show <提交哈希>:<文件路径>:直接把这个文件在该提交时的完整内容输出到终端。先用 git log --oneline -- <文件路径> 找到它变更过的提交。

常用操作

# 1. 找到这个文件的变更历史
git log --oneline -- src/app.js

# 2. 查看某个提交时的完整内容
git show a1b2c3d:src/app.js

# 3. 导出旧版本到本地文件
git show a1b2c3d:src/app.js > app-old.js

# 4. 只看该提交对这个文件改了什么
git show a1b2c3d -- src/app.js

# 5. 相对引用:看 3 个提交前的版本
git show HEAD~3:src/app.js

其他查看方式

  • 对比两个版本:git diff A B -- src/app.js;
  • 图形化:gitk -- src/app.js,或 IDE 的 Git History 插件;
  • GitHub 网页:文件页面按 y 锁定提交哈希,或 Blame 视图逐行追溯。

想恢复旧版本

git restore --source=a1b2c3d src/app.js    # 恢复内容到工作区(旧语法 git checkout a1b2c3d -- 路径)

常见问题(FAQ)

Q:文件改过名怎么查历史?

git log --follow -- 新路径 会跨重命名跟踪历史。拿到旧路径后 git show 提交:旧路径 查看。

Q:已删除的文件怎么找回内容?

git log --diff-filter=D -- 路径 找到删除它的提交,然后 git show 删除前的提交^:路径(注意 ^ 指父提交)看最后内容。

Q:show 输出中文乱码?

Git 默认对非 ASCII 路径转义;git config core.quotepath false 解决路径乱码。文件内容本身按原编码输出,终端编码匹配即可。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台