在项目开发中,偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件。此篇文章将介绍如何通过git从历史提交记录、分支记录恢复指定文件。
1. git checkout
说明:使用git checkout除了可以切换分支外,还可以签出指定文件。
语法:
1 | git checkout [<options>] [<branch>] -- <file> |
API:https://git-scm.com/docs/git-checkout
注意:签出后的文件将会覆盖【工作目录】中的相同文件;若【工作目录】中的文件已删除,会创建签出的文件。
2. 从当前分支签出指定文件
背景:本地仓库有个a.txt文件,最近2次此文件的修改记录如下:
2.1 从上一次提交中签出指定文件
1 | git checkout -- a.txt |
提示:运行上面的命令后,将签出上次提交时a.txt文件。
2.2 从指定的提交历史中签出指定文件
附加上commit id,将会签出指定提交记录中的文件:
1 | git checkout 830cf95f56ef9a7d6838f6894796dac8385643b7 -- a.txt |
3.从其他分支签出指定文件
背景:一个仓库一般有一个master分支和其他多个brach。branch主要目的是为了某个功能开发,在开发期间 master 分支可能更新了核心模块,这时其他branch需要同步更新此模块。
说明:只需要签出时指定分支名称。
命令:
1 | git checkout master -- a.txt |
4. 签出其他类型
除了签出制定文件外,git还支持签出指定目录、制定后缀等等。
4.1 签出某个后缀的文件
说明:签出根目录下所有 txt 后缀的文件。
命令:
1 | git checkout -- *.txt |
4.2 签出指定目录
说明:签出 css 目录。
命令:
1 | git checkout -- css/ |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!