Ответ 1
Нет. Эти файлы исчезли.
(Только что проверено на Linux: git clean calls unlink()
и не делает ничего заранее заранее.)
Я следовал инструкциям по созданию страниц github и забыл перейти в свой подкаталог git. В результате я просто уничтожил весь каталог документов с помощью git clean -fdx
.
Могу ли я исправить эту ужасную ошибку?
Нет. Эти файлы исчезли.
(Только что проверено на Linux: git clean calls unlink()
и не делает ничего заранее заранее.)
git clean -fdxn
Будет выполнять сухой запуск и покажет вам, какие файлы будут удалены, если вы запустили
git clean -fdx
(конечно, это полезно, только если вы это знаете заранее, но в следующий раз)
Нет. "git clean -fdx" удалит все файлы и каталоги, которые git не отслеживает из вашего рабочего каталога. Поскольку git не отслеживает эти файлы, у него не будет резервных копий этих файлов. По крайней мере, обычно.
Если вы сделали "git add" в одном из этих файлов относительно недавно (но прервали фиксацию), есть шанс, что вы можете найти его с помощью "git fsck -lost-found". Это стоит попробовать, но не слишком сильно рассчитывайте.
В будущем вам следует подумать о том, чтобы совершить несколько раз слишком часто, чем несколько раз слишком редко. Таким образом, вы, по крайней мере, будете иметь локальную резервную копию, даже если вы не нажмете эти коммиты на удаленный компьютер.
IntelliJ/Android Studio позволяет восстанавливать файлы из локальной истории.
Если вы работаете над Eclipse, одним из возможных решений является восстановление из локальной истории Eclipse.
У меня была эта проблема сегодня.
Как говорили другие, git не сохраняет файлы.
Единственный способ отменить это - утилита undelete. Я использовал "extundelete" и восстановил все, но ваш пробег/файловая система может отличаться.
Как упоминалось выше @kusma, если вы повезло (если вы когда-либо делали "git add" ), вы можете использовать следующее для извлечения всего объекта:
git fsck | awk '{print $3}' | xargs git show | tee searchresults.log
Таким образом, он будет искать все типы блоков, собирать весь diff и добавлять в файл, который вы можете извлечь потерянный файл. В моем случае я потерял целый класс Java.
Фактически Да! Это возможно! Но без использования команд git.
Все, что нам нужно, это просто инструмент восстановления файлов, например Recuva.
Просто укажите путь, откуда он был удален, и пусть он восстанавливает файлы.
Также приведены некоторые полезные примечания для использования этого приложения:
Advanced Mode
→ Options
→ Actions
→ Restore folder structure
Предупреждение! Как только вы потеряете (случайно удалили) любой файл, постарайтесь не касаться (добавлять/редактировать файлы) диск с того места, где он был удален, чтобы увеличить вероятность успешного восстановления. В противном случае вы можете полностью потерять этот файл.
Почему это работает: Когда вы удаляете файл, на самом деле он не удаляется. Он просто помечен как "удаленный", поэтому в следующий раз, когда вы добавляете/обновляете файлы на один и тот же диск, эти старые файлы перезаписываются новыми. Но до тех пор, пока они не будут перезаписаны, все еще можно читать (и, конечно, восстанавливать) файлы.
Если вы используете git с MSBuild, я создал цель, которая копирует все файлы, а затем git clean -xdf
. Таким образом, вы можете легко восстановить файл, если поймете, что вы удалили то, что вы не хотели удалять. Посмотрите здесь: http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/
Если вы используете любую интегрированную среду разработки Jetbrains, вы можете просмотреть локальную историю файла. Если вы сделали git clean
, вы можете воссоздать файл, проверить локальную историю файла и восстановить его оттуда.
Работал на меня за один файл. Для полного каталога я понятия не имею, как это сделать.
К счастью, я допустил эту ошибку при использовании Windows 7. Пошел в корзину, выделил все удаленные файлы и нажал "Восстановить". Готово.
Я сделал с кодом, который должен был добавить в свой репозиторий, и очистил с помощью -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