Git恢復刪除的檔案

admin發表於2018-07-27

由於各種原因,工作中難免有失誤,如果不小心刪除一個重要檔案,那該怎麼辦。

不用擔心,Git的任務之一就是修復類似失誤,可能無法避免造成損失,但可以將損失降到最低。

一.恢復被刪除的檔案:

首先看一下工作區的檔案:

[Shell] 純文字檢視 複製程式碼
$ ls -l

執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201807/27/003357zvm9xisxi8hh98eg.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

下面將readme.txt檔案刪除,可以使用如下命令:

[Shell] 純文字檢視 複製程式碼
$ rm readme.txt

關於刪除檔案更多知識可以參閱Git刪除指定檔案一章節。

檢視一下工作區檔案:

[Shell] 純文字檢視 複製程式碼
$ ls -l

執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201807/27/003518uqeyy0y5gv5yubvp.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

readme.txt檔案已經被刪除。

rm只是將工作區中的檔案刪除,暫存區相應的檔案依然存在,只要將暫存區內容恢復到工作區即可。

執行命令如下:

[Shell] 純文字檢視 複製程式碼
$ git checkout readme.txt

執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201807/27/003607fgp3cvc6654vr33p.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

被刪除的檔案又回來了。

git checkout命令是一個多面手:

(1).後面跟著分支名稱,Git會切換到指定的分支。

(2)。後面跟著文件名或者路徑,G不會切換分支,而是把檔案從.git目錄裡取一份恢復到目前的工作目錄。

更多git checkout內容參閱git checkout命令詳解一章節。

上面介紹的是如何恢復使用rm刪除的檔案,下面再介紹一下恢復使用git rm刪除的檔案:

[Shell] 純文字檢視 複製程式碼
$ git rm readme.txt

程式碼執行小姑截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201807/27/003701v6fi9hlztuhn49ra.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

被git rm命令刪除,對應暫存區的檔案已經不存在,那麼只能從commit提交記錄中恢復。

恢復的方法有多種,這裡同樣使用git checkout命令來實現:

[Shell] 純文字檢視 複製程式碼
$ git checkout HEAD readme.txt

上面程式碼會將最後一次commit提交中的readme.txt檔案恢復。

二.任何情況都可以恢復嗎:

當然不是,如果你把.gti目錄刪除了,那肯定是無法再恢復。

實質上,之所以能將刪除的檔案恢復,因為在.git目錄中有備份,Git會將暫存區或者歷史提交中內容來恢復。

相關文章