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



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

738   12  

12 ответов:

нет. Эти файлы исчезли.

(только что проверено на Linux:git clean calls 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. я настоятельно рекомендую вам установить этот флажок перед восстановлением файлы (когда удаленные файлы появляются в процессе восстановления окно):
    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, look и link из inodes, testdisk и многих других инструментов, которые появляются, и никто не нашел каталог, который эта глупая запись стерла случайно.

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

$ ./configure 
$ make 

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

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

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


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

Comments

    Ничего не найдено.