Git - отмена git rm

Возможный дубликат:
Как отменить « git rm -r. »?

Git SOS здесь. Я проработал 10 часов над проектом без фиксации (я знаю, я знаю), а затем я добавил слишком много файлов, поэтому я попытался использовать git rm и случайно удалил ВСЕ. Есть ли у меня надежда? : (((


person user1436111    schedule 04.12.2012    source источник


Ответы (1)


Если вы уже вносили изменения, то:

git reset (--hard) HEAD~1

Если нет, то:

git reset
git ls-files -d -z | xargs -0 git checkout --
person Hauleth    schedule 04.12.2012
comment
Будет ли git reset --hard HEAD работать во втором случае? - person Tamás Szelei; 30.04.2013
comment
Будет, но он также отменит все ваши изменения. - person Hauleth; 30.04.2013
comment
Ах хорошо. Что именно здесь делает вторая линия? Это строго отменяет rm или имеет более широкий эффект? - person Tamás Szelei; 30.04.2013
comment
Он удаляет все файлы в индексе, а затем извлекает все измененные файлы в HEAD. - person Hauleth; 01.05.2013
comment
Ты гребаный спасатель! - person Omar Wagih; 11.12.2013
comment
Будьте осторожны при использовании второго, я попытался использовать его для восстановления некоторых случайно rm-файлов и потерял свои незафиксированные изменения. Думаю, ошибка нубов. - person Craig Brett; 26.08.2014
comment
Для восстановления удаленных файлов последняя часть должна иметь вид git ls-files -d, и тогда будут восстановлены только удаленные файлы. - person Hauleth; 26.08.2014
comment
Я потерял все свои незавершенные изменения после git checkout -- $(git ls-files -m). Я не знаю, правильно ли то, что здесь комментируют другие люди (вместо этого используется git ls-files -d), но тот, кто знает, должен отредактировать этот ответ - person Carles Jove i Buxeda; 30.01.2015
comment
git checkout -- $(git ls-files -d) Это не работает, если в именах файлов есть пробелы. - person Chris P; 17.07.2015
comment
git ls-files -d -z | xargs -0 git checkout -- - это путь для общего случая с пространствами имен файлов (jennyandlih.com/ using-git-ls-files-input-xargs) - person Chris P; 17.07.2015
comment
установить корзину, а затем alias rm=trash в .zshrc или что-то подобное, теперь все удаления можно отменить :) - person timeyyy; 29.06.2016
comment
Вы только что сэкономили мне весь рабочий день. Сегодня я усвоил урок. - person lucasfcosta; 12.05.2017
comment
Никогда прежде я не был так влюблен в ваши строки выше. - person kaiser; 22.10.2020