在项目开发中,偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件。此篇文章将介绍如何通过git从历史提交记录、分支记录恢复指定文件。
1. git checkout
说明:使用git checkout除了可以切换分支外,还可以签出指定文件。
语法:
git checkout [<options>] [<branch>] -- <file>
API:https://git-scm.com/docs/git-checkout
注意:签出后的文件将会覆盖【工作目录】中的相同文件;若【工作目录】中的文件已删除,会创建签出的文件。
2. 从当前分支签出指定文件
背景:本地仓库有个a.txt文件,最近2次此文件的修改记录如下:
2.1 从上一次提交中签出指定文件
git checkout -- a.txt
提示:运行上面的命令后,将签出上次提交时a.txt文件。
2.2 从指定的提交历史中签出指定文件
附加上commit id,将会签出指定提交记录中的文件:
git checkout 830cf95f56ef9a7d6838f6894796dac8385643b7 -- a.txt
3.从其他分支签出指定文件
背景:一个仓库一般有一个master分支和其他多个brach。branch主要目的是为了某个功能开发,在开发期间 master 分支可能更新了核心模块,这时其他branch需要同步更新此模块。
说明:只需要签出时指定分支名称。
命令:
git checkout master -- a.txt
4. 签出其他类型
除了签出制定文件外,git还支持签出指定目录、制定后缀等等。
4.1 签出某个后缀的文件
说明:签出根目录下所有 txt 后缀的文件。
命令:
git checkout -- *.txt
4.2 签出指定目录
说明:签出 css 目录。
命令:
git checkout -- css/