Подтвердить что ты не робот

Я только что удалил одну неделю работы! Как отменить git rm -r -cached?

Я совершил неправильный файл, поэтому мне захотелось его очистить, но случайно я перезаписал все свои файлы в каталоге с последними файлами, привязанными к git.

Помогите пожалуйста!

Что я сделал:

git add fileIdidnotwanttoadd
git rm -r --cached .
git reset --hard HEAD

Результат: все мои исправления исчезли! Я исправил 3 очень трудные ошибки, и все прошло!


Edit:

Спасибо всем. Я использовал большинство ваших предложений, но мне пришлось переделать несколько вещей, но теперь все восстановлено. Не более перфекционизм, я выучил свой урок!

4b9b3361

Ответ 1

(from: Восстановить из git reset --hard?)

Вы не можете вернуть незафиксированные изменения в целом, поэтому реальный ответ здесь будет: посмотрите на свою резервную копию. Возможно, ваш редактор /IDE хранит временные копии в /tmp или C:\TEMP и тому подобное. [1]

git reset [email protected]{1}

Это приведет к восстановлению предыдущей главы - в случае, если вы что-то совершили раньше

[1]

  • vim, например. необязательно сохраняет постоянную отмену,
  • eclipse IDE хранит локальную историю;

такие функции могут сохранить ваш **

Ответ 2

  • Если вы скорректировали локально эти исправления, вы можете восстановить их с помощью git reflog.
    (для одного файла вы также можете попробовать git rev-list)
  • Если вы их не совершали (т.е. они были только в рабочем дереве, а не в репо), они исчезли с вашего локального рабочего дерева.
  • Если вы добавили их в индекс (но не зафиксировали их), см. Mark answer.

Ответ 3

Существуют различные ситуации, в которых вы можете восстановить свои файлы:

  • Если вы выполнили свои изменения перед выполнением вышеуказанных команд (т.е. запустили git add <file>, когда <file> содержало содержимое, которое вы хотите вернуть), тогда должно быть возможно (несколько с трудом) вернуть этот файл, следуя этот метод.
  • Если вы когда-либо создавали коммит, содержащий эти файлы, то вы можете вернуться к этой фиксации, найдя имя объекта commit в рефлоге и затем создав на нем новую ветку. Тем не менее, это звучит из вышесказанного, как будто вы никогда не совершали эти файлы.
  • Предположим, что вы когда-либо выполняли git stash во время работы над этими файлами, они могут быть восстановлены либо через git stash list, либо методы 1. или 2. выше.

В противном случае, боюсь, вам может быть не повезло.: (

Ответ 4

Я не нашел ни одного из вышеупомянутых решений успешным. Запуск

git status

в корне вы увидите все незафиксированные изменения. Чтобы отменить изменения, вызванные

git -rm --cached <files>

вы хотели бы использовать

git checkout -- *

Я надеюсь, что это поможет снять стресс.