Я случайно удалил .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
).