После git init
этого я добавил и зафиксировал несколько файлов, внес некоторые изменения, добавил и зафиксировал. Установите демон git (работает под Cygwin на WinXP) и клонировали репозиторий один раз. Теперь я получаю эту ошибку с клонированным хранилищем:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
Есть ли способ исправить это, кроме получения новой копии хранилища?
git
corruption
Number8
источник
источник
Ответы:
Если проблема связана с индексом в качестве промежуточной области для фиксации (то есть
.git/index
), вы можете просто удалить индекс (сделать резервную копию, если хотите), а затем восстановить индекс до версии в последнем коммите:В OSX / Linux:
В Windows:
(Команда
reset
выше такая же какgit reset --mixed HEAD
)В качестве альтернативы вы можете использовать более низкий уровень сантехники
git read-tree
вместоgit reset
.Если проблема связана с индексом для packfile , вы можете восстановить его, используя
git index-pack
.источник
:w!
в:Gstatus
(от fugitive.vim). Этот ответ спас меня от растягивания волос.erase /s .git\index
, мнеerase .git\index.lock
тоже нужен был .git reset --keep
вместо этого? В шпаргалке Tower Git это объясняется так: Сбросьте указатель HEAD на предыдущий коммит и сохраните незафиксированные локальные измененияgit reset --keep
это более безопасная формаgit reset --hard
;git reset --mixed
вообще не касается workdirВозможно, вы случайно повредили файл .git / index с помощью sed в корне вашего проекта (возможно, рефакторинг?) Примерно так:
чтобы избежать этого в будущем, просто игнорируйте двоичные файлы с помощью вашего grep / sed:
источник
.git/index
, вы всегда можете удалить их и создать зановоgit reset
(без--hard
!).sed
что-то вроде этого.find .git/ -type f -exec sed -i 's/Legislator/Politician/g' {} \;
Это может помочь, если ваш файл.git/
настолько поврежден, чтоgit reset
не сработает. Или, может быть, вы хотите восстановить существующие,.git/index
не удаляя их. Конечно, это не удастся, если в вашем исходном коде или индексе уже есть некоторые «Законодатели».sed
, заменив мойnew_string
на мойold_string
!У меня была эта проблема, и я пытаюсь исправить это:
НО это не сработало. Решение ? По какой-то причине у меня были другие папки .git в подкаталогах. Я удаляю эти .git папки (не главные) и
git reset
снова. Как только они были удалены, все снова заработало.источник
Это звучит как плохой клон. Вы можете попробовать следующее, чтобы получить (возможно?) Больше информации:
источник
Поскольку вышеприведенные решения оставили меня с постоянными проблемами, я использовал это скучное решение:
Сделал трюк. Кстати, я сделал
sed
в корне проекта, как и предполагал @hobs. Выучил мой урок.источник
Это сработало для меня. Хотя мне любопытно, почему я начал получать ошибки в первую очередь. Когда я вышел из системы вчера, это было нормально. Войдите сегодня утром, это не было.
источник
Примечание для пользователей подмодулей git - решения здесь не будут работать для вас как есть.
Допустим, у вас есть
dev
, например, родительский репозиторий , а ваш субмодульный репозиторий называетсяapi
.если вы внутри,
api
и вы получите ошибку, упомянутую в этом вопросе:error: bad index file sha1 signature fatal: index file corrupt
index
Файл НЕ будет внутри.git
папки. Фактически, это.git
даже не будет папка - это будет текстовый документ с расположением реальных данных .git для этого хранилища. Скорее всего как то так~/dev/api $ cat .git gitdir: ../.git/modules/api
Итак, вместо этого
rm -f .git/index
вам нужно будет сделать это:rm -f ../.git/modules/api/index git reset
или, в более общем плане,
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset
источник
Эта проблема может возникнуть, если
.git
под одним из подкаталогов находится каталог. Чтобы исправить это, проверьте, есть ли там другие каталоги .git, удалите их и попробуйте снова.источник
Я сделал простой трюк. Я клонирую репо в новую папку. Скопировал папку .git из новой папки в старую папку репозитория, заменив там .git.
источник
Более подробная информация на https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
источник
Это смешно, но я только что перезагрузил свою машину (mac), и проблема исчезла, как будто ее никогда не было. Я ненавижу звучать как парень поддержки ...
источник
Вы также можете попробовать восстановить предыдущую версию файла (если вы используете Windows OS)
источник