在项目开发中,偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件。此篇文章将介绍如何通过git从历史提交记录、分支记录恢复指定文件。

 

1. git checkout

说明:使用git checkout除了可以切换分支外,还可以签出指定文件。

语法

git checkout [<options>] [<branch>] -- <file>

APIhttps://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/

 

posted on 2017-11-02 15:14  FangMu  阅读(16121)  评论(0编辑  收藏  举报