Как восстановить '.git/index' локально?

Я случайно удалил .git/index, есть ли способ его восстановить? Он окончательно удален. Я еще ничего не совершил.

Ответ 1

Чтобы перестроить индексный файл, вы можете попробовать эти две команды:

git reset         # re-scan the working directory
git add -u        # update the index

Ответ 2

Вы можете восстановить индекс с последней проверки с помощью git reset. Любой контент, который вы добавили с тех пор, по-прежнему добавляется, он находится в репозитории, но индекс был единственным местом, в котором записана ассоциация пути и содержимого. Вы можете удалить git fsck недостижимые объекты в каталог lost'n'found, увидеть его документы, а затем самый быстрый маршрут по привычной территории - просто отбросить содержимое в рабочей строке и добавить его снова, git не будет дублировать содержимое, но он восстановит запись индекса.

Ответ 3

Я не думаю, что это возможно, но не через git (вы можете попробовать посмотреть в своей корзине или какие-либо средства восстановления вашей файловой системы). Однако вы получите новый индекс, как только вы git add что-нибудь или сделаете что-то еще, требующее индекса.

Если вы потеряли какие-либо файлы, которые вы git add, вы можете пройти через. /git/objects (find.git/objects / -type f |sed 's:\.git/objects/::; s:/::'), проверьте содержимое каждого с git cat-file -p $the_hash, и как только вы нашли потерянный, перенаправите вывод в файл.

(Когда вы git add, запись имени файла переходит в .git/index а содержимое файла сохраняется в .git/objects/. Индекс Git сделан из записей имени файла потенциального древовидного объекта, который создается при commit Вы можете просмотреть читаемое человеком представление индекса с помощью git ls-files --stage).