Когда вы git add
файл, git
хранит его как объект в вашем репозитории (в каталоге .git
). Ваши файлы, вероятно, все еще висят вокруг. С другой стороны, запустив команду git reset --hard
, вы потеряли какую-либо информацию о файле имен.
Вы можете увидеть сами объекты, выполнив:
find .git/objects -type f
Который будет производить что-то вроде:
.git/objects/67/6e8ff99e42b61f96bb0107fa1dff59594eba07
.git/objects/7c/45d8f7d987c584a8d61a8d75431ddd4f1ba52f
Вы можете увидеть содержимое этих объектов с помощью команды git cat-file
, как:
git cat-file -p 7c45d8f7d987c584a8d61a8d75431ddd4f1ba52f
Обратите внимание, что идентификатор объекта представляет собой конкатенацию двух символов s в каталоге первого уровня, за которым следуют все символы имени файла.
Таким образом, было бы довольно тривиально написать сценарий, который восстановит содержимое всех ваших файлов, но вам придется вручную переименовать их после факта.
«Тогда я случайно сброшу git' ... ввод« git reset --hard »случайно кажется немного маловероятным. В любом случае ваши изменения исчезли из рабочего каталога и индекса, поэтому, если в вашей среде нет резервной копии, вам может быть не повезло. –