Могу ли я отменить "git clean-fdx"?

я следовал инструкциям на создание страниц github, и забыл перейти в мой подкаталог git. В результате я просто взорвал весь каталог документов с помощью git clean -fdx. Есть ли способ исправить эту ужасную ошибку?

12 ответов


нет. Эти файлы пропали.

(только что проверено на Linux:git чистые звонки unlink(), и ничего не резервирует заранее.)


git clean -fdxn

будет репетиция, и показать вам, какие файлы будут удалены, если вы запускали

git clean -fdx

(конечно, это только полезно, если вы знаете это заранее, но в следующий раз)


нет. "git clean-fdx" удалит все файлы и каталоги, которые git не отслеживает из вашего рабочего каталога. Поскольку Git не отслеживает эти файлы, у него не будет резервных копий этих файлов. По крайней мере, обычно.

Если вы сделали "git add" на одном из этих файлов относительно недавно (но прервали фиксацию), есть шанс, что вы можете найти его с помощью "git fsck --lost-found". Стоит попробовать, но не слишком надейся.

в будущем вы следует подумать о том, чтобы совершать несколько раз слишком часто, чем несколько раз слишком редко. Таким образом, у вас будет хотя бы локальная резервная копия, даже если вы не будете нажимать эти коммиты на пульт.



сегодня у меня была эта проблема.

как говорили другие, git не хранит файлы.

единственный способ исправить это с помощью утилиты восстановления. Я использовал "extundelete" и восстановил все, но ваш пробег/файловая система может отличаться.


Как @kusma упоминалось выше, если вы повезло (Если вы когда-либо делали" git add"), то вы можете использовать следующее для извлечения всего объекта:

git fsck | awk '{print }' | xargs git show | tee searchresults.log

таким образом, он будет искать все типы кусков, собирать все различия и добавлять в файл, который вы можете извлечь потерянный файл. В моем случае я потерял целый класс Java.


Если вы работаете над Eclipse, одним из возможных решений является восстановление из локальной истории Eclipse.


на самом деле да! Это возможно! Но без использования команд git.
Все, что нам нужно, это просто инструмент восстановления файлов, как Recuva.
Просто укажите путь, с которого он был удален, и позвольте ему восстановить файлы.

также Вот некоторые полезные заметки для использования этого приложения:

  1. я настоятельно рекомендую вам установить этот флажок перед восстановлением файлы (при появлении удаленных файлов в recovery window):
    Advanced Mode ->Options ->Actions ->Restore folder structure
    С этого все ваши файлы будут восстановлены, сохраняя папку структура, так что тогда будет намного проще просто перетащить это папка в путь, откуда она была удалена.
  2. установить инструмент восстановления на USB-устройство гораздо предпочтительнее (из-за предупреждения ниже)
  3. при упоминании, где восстановить файлы,избежать выбор того же диска, из которого удаляются файлы (снова из-за вышеупомянутого предупреждения), поскольку в настоящее время восстановленный файл может перезаписать другой удаленный файл, который еще не восстановлен. Восстановление файлов на любой USB-накопитель всегда является хорошим решением.

предупреждение! как только вы потеряете (случайно удалите) любой файл, постарайтесь не трогать (добавлять/редактировать файлы) диск, с которого он был удален, чтобы увеличить возможность успешного восстановления. В противном случае вы можете полностью проиграть дело.

почему работает: Когда вы удаляете файл, на самом деле он не удаляется. Он просто помечен как "удаленный", поэтому в следующий раз, когда вы добавляете/обновляете файлы на тот же диск, эти старые файлы перезаписываются новыми. Но пока они не перезаписаны, все еще можно прочитать (и, конечно, восстановить) файлы.


Если вы используете git с MSBuild, я создал цель, которая копирует все файлы, а затем делает git clean -xdf. Таким образом, вы можете легко восстановить файл, если понимаете, что вы удалили что-то, что не хотели удалять. Взгляните сюда:http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/


к счастью, я сделал эту ошибку при использовании Windows 7. Зашел в корзину, выделил все удаленные файлы и нажал кнопку "Восстановить". Сделанный.


Если вы используете любую IDE Jetbrains, есть возможность просмотреть локальную историю файла. В случае, если вы сделали git clean, вы можете воссоздать файл и проверить локальную историю файла и восстановить его оттуда.

работал на меня для одного файла. Для полного каталога я понятия не имею, как это сделать.


Я сделал с кодом, который я должен был добавить в свой репозиторий, и я очистил с помощью-dfx, я мог восстановить файлы.

Я пытался использовать debugfs, искать и ссылаться на inodes, testdisk и многие другие инструменты, которые появляются, и никто не нашел каталог, который эта глупая запись удалила случайно.

скачать extundelete из sourceforge.
Вероятно, вам нужно будет установить пакет e2fslibs-dev
Бежать

$ ./configure 
$ make 

он будет генерировать двоичный файл для extundelete внутри папки src В моем случае, я ошибочно стер папку. назовем это FOOBAR

Я просто убежала:

$  sudo ./extundelete --restore-directory <full path to FOOBAR > <the partition> 


и он создал папку с именем RESTORED_FOLDERS