git 恢復被刪除的檔案

2021-08-13 23:42:04 字數 873 閱讀 3090

剛接觸 git 的時候,當碰到之前刪除某個檔案(比如)後面開發又需要恢復的時候,會採取非常笨的方法。從某乙個檔案存在的 commit 切換出乙個新的分支,再將需要的某個檔案拷貝出來。像是類的檔案有時候會直接叫 ui 設計師再發乙份。這種需要恢復檔案情況不多時(好像確實也不是太多,目前本人遇到這種情況還是極少的),其實這種操作還好。但情況多的時候,還是挺浪費時間的。

git 其實本身就可以恢復被刪除的檔案。幾個命令就可以了。

大多數我們是不知道在何時刪除了某個檔案,通過下面這個命令我們可以檢視在哪個 commit 中刪除了哪些檔案。

git

log-

-diff

-filter=d--

summary

執行這個命令後效果如下:

比如我想恢復 ic_selected.png 這個檔案,我們可以看到刪除該檔案對應的 commit id :f541888b0e7255cc6aa22a277f3dd9fe5502e5e2

接下來我們執行下面這個命令

git checkout $commit~1 filename
這個命令會檢出該 commit 的上乙個提交中的檔案,因為我們是在該 commit 中刪除的檔案,所以需要在上乙個 commit 才能恢復出檔案。

執行該命令後的效果

可以看到,執行完我們已經恢復了我們需要的檔案。

被刪除檔案恢復原理

打個通俗易懂的比方,檔案在磁碟上的儲存就像是乙個鍊錶,表頭是檔案的起始位址,整個檔案並不一定是 連續的,而是乙個節點乙個節點的連線起來的。要訪問某個檔案時,只要找到表頭就行了。刪除檔案時,其實只是把表頭刪除了,後面的資料並沒有刪除,直到下一 次進行寫磁碟操作需要占用節點所在位置時,才會把相應的資料覆...

linux下例項恢復被刪除檔案

今天突然想到要測試下檔案恢復,網上看到很多人用一款ext3grep的軟體,下下來使用後發現 效果不佳,只能恢復小檔案,不能恢復目錄。後來又找到一款名叫extundelete的軟體,使用後發現不錯,官網據說還能恢復ext4檔案系統下的檔案 以下是實驗記錄 file name inode number ...

linux如何恢復被刪除的熱檔案

windows下如果檔案被刪除還有 站,如果沒放入 站或者 站被清空了,還可以使用easyrecover或者finaldata等等很多任務具來恢復 可是linux下沒有 站,那麼linux下如果檔案被刪除了如何恢復呢?如果剛好你刪除的檔案還在被其它程式呼叫,那麼恭喜你,很輕易的的將刪除的檔案找回來 ...