在項目開發中,偶爾會因為誤刪文件或其他原因需要從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/