簡體   English   中英

是否仍然可以在 git 中恢復已刪除的未跟蹤文件?

[英]Is it still possible to restore deleted untracked files in git?

假設昨天我在我的 master 分支上做了一些更改,但我忘了添加、提交它們。 早上我做了

git reset --hard

在這種情況下是否可以恢復已刪除的文件?

一些更好的IDE會將您的文件跟蹤為本地歷史記錄。 如果您從外部刪除了文件(例如, git reset ),您應該可以在父目錄中的IDE中單擊並選擇“與本地歷史記錄比較”。

當我的未跟蹤文件被一些實用程序消滅時,我在PHPStorm IDE中成功使用了此功能...

不...................不是。

git reset --hard是一個非常危險的命令,所以下次使用時要小心:)

如果您沒有對這些文件進行任何提交,那么您似乎無法恢復它們。

否則,reflog命令可以幫到你。

注意由於接受的答案已經公布,所以步驟似乎有所改變。但這個想法仍然是一樣的。

為了添加到已接受的答案,我能夠使用Webstorm 2016恢復已刪除的文件。

  1. 首先,我使用git git clean -f丟失了我的文件強制清理。
  2. 為了恢復它,我進入了Webstorm並執行了以下步驟:

    • 轉到項目的“項目”選項卡,右鍵單擊“本地歷史記錄”下的“顯示歷史記錄”。 如圖所示。

    • 單擊“顯示歷史記錄”后,可以看到彈出“外部更改 - >還原”。 單擊以還原右側所需的文件。 如附圖所示。

    • 完成上述兩個步驟后,您應該會在“項目”標簽中看到您的文件。 彈出的“本地歷史記錄”將顯示此附圖中的內容。 恢復為外部更改您將獲得一個選項,以將其添加到Git。

    • 要解決它,只需從命令行執行git reset HEAD <filename>

git reset --hard不會刪除未跟蹤的文件。 但是, git clean會。

但是如果你git add文件,不要git commit它們然后運行git reset --hard那些文件丟失。

但是沒關系,因為它們可以恢復,如本答案所示。 (好吧,直到下一個git gc )。

git fsck也許可以幫到你。

如果你還沒有完成垃圾收集,它可能會幫助你。 一旦你有blob id你可以說:

git show {blobId}

在Intellij中如何恢復未跟蹤的恢復更改

第1步:選擇文件夾,右鍵單擊它

第2步:轉到“本地歷史記錄”,然后轉到“顯示歷史記錄”

在此輸入圖像描述

第3步:選擇意外恢復的未跟蹤文件。 然后在右側面板中選擇這些文件並還原更改,您將獲得恢復格式的文件。

在此輸入圖像描述

您無法從git訪問以前版本的未跟蹤已刪除文件,因為在coruse中它們不存在。 我會從一些備份中恢復它們(也許是ide / editor留下了隱藏的備份文件?),或者,作為替代方案,我會避免過多地使用該文件系統並開始搜索恢復工具。

如果“recuva”等文件檢索工具不起作用,請執行以下操作:

  1. 如果您至少構建了一次解決方案,那么將在您的 Debug/Release 或其他文件夾中存儲 DLL(在 .net 中間語言文件中稱為 DLL)。
  2. 然后嘗試使用 DotPeek 等工具反匯編 DLL。

這對我有用。 我能夠檢索內容。

如果您使用的是 Windows,請轉到您保存這些文件的文件夾 > 右鍵單擊 > 屬性 >“以前的修訂版”,然后雙擊最近的修訂版。 它將顯示當時所有這些文件是如何被提及的。 打開你想要的文件,如果它是你想要的,復制內容並粘貼到你當前的文件中。

如其他答案中所述, Local History方法或在您編寫它的編輯器中簡單地單擊ctrl+z (撤消)是最佳答案。 但是當我實際上沒有在支持本地歷史記錄的 IDE 中編寫代碼時,這種方法就派上用場了。

對於 VScode,以下步驟對我恢復已刪除的未跟蹤文件有效

  1. CTRL + SHIFT + P
  2. 查找:“本地歷史:查找要還原的條目”
  3. 搜索已刪除的文件
  4. 選擇上次保存的文件打開

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM