Git: remote: fatal: индексный файл поврежден, "index использует расширение yz"? - PullRequest
0 голосов
/ 04 апреля 2020

Я только что столкнулся с проблемой, с которой я никогда не сталкивался, и не могу найти никакой помощи.

Я запускаю мастер-репо git на живом веб-сайте в нашей среде хостинга и на голом источнике. репо на том же сервере. Все наши разработчики передают go голому мастеру-источнику, который имеет хук пост-получения для pu sh каждый коммит в мастер-репо, так что pu sh отражается в файлах живого сайта. Единственное неудобство заключается в том, что всякий раз, когда мы получаем обновления WordPress, мы должны фиксировать мастер-репо, а затем возвращать его в исходное репо, чтобы наши разработчики могли загрузить эти обновленные файлы.

Проблема: сегодня я пошел, чтобы зафиксировать обновление плагина WordPress, и коммит работал нормально, но pu sh выдал следующую ошибку crypti c, по которой я не могу найти никакой помощи:

git push origin master

Counting objects: 344, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (323/323), done.
Writing objects: 100% (344/344), 1.76 MiB | 5.61 MiB/s, done.
Total 344 (delta 237), reused 14 (delta 1)
remote: Resolving deltas: 100% (237/237), completed with 226 local objects.
remote: Running post-receive (git pull origin master):
remote: error: index uses ▒yz▒ extension, which we do not understand
remote: fatal: index file corrupt

(странные символы вокруг букв "yz" читаются как "<B3>yz<AC>", когда я запускаю git diff)

Если я запускаю git status на мастере (не может быть запущен на Первоначально, поскольку это голый репо), он повторяет последние две строки вывода. Если я запускаю git log на обоих репозиториях, они выглядят нормально, но источник, конечно же, один коммит за мастером, потому что фиксация на мастере сработала, но толкание к источнику не удалось.

Я никогда не слышал об этом Расширение "yz" раньше, и, насколько я могу судить, больше ни у кого нет. Все, что я сделал, было коммитом и пу sh, а пу sh провалился. Мы не используем никакого такого расширения "yz", мы используем vanilla Git, делаем очень обычные c нажатия и извлечения, наш хук post-receive состоит из 5-строчного скрипта, который просто автоматически передает каждый коммит от источника к мастеру и сбрасывает права доступа к файлам, чтобы обеспечить их чтение веб-сервером. Единственная странная вещь, которую мы делаем, - это использование Git для управления сайтом WordPress для контроля версий. Все разработчики используют Tortoise Git на Windows без каких-либо специальных настроек или каких-либо плагинов.

Я видел множество вопросов и ответов о поврежденных индексах, но ничего подобного.

Я еще ничего не пробовал, так как я не уверен, что делать, не понимаю внутренности Git и не хочу ничего ломать, но нам нужно уметь тянуть и пу sh и не может, пока репозитории снова не будут синхронизированы c.

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Все с префиксом remote: пришли не от вашего Git, а от их Git - Git вашего Git, вызванного по URL, который вы использовали при Вы пробежали git push.

Это их Git, которые жалуются на их Git индекс . Вероятно, это проблема повреждения файла на их компьютере. Вы должны получить их, кем бы они ни были, чтобы проверить их систему. Если все выглядит нормально, им, вероятно, следует просто удалить и перестроить свои индексные файлы.

(Если «они» / «они» действительно вы, go на любой машине, участвующей, осмотрите их осторожно для повреждения или дисков, которые горят или что-то еще, и если все выглядит хорошо, удалите и восстановите файлы индекса.)

0 голосов
/ 04 апреля 2020

Хорошо, вот что я сделал:

Поскольку я не хотел терять какие-либо изменения в главном репо (поврежденный индекс), так как эти изменения нужно было сохранить и также подтолкнуть к источнику (рабочий индекс) Я запустил следующее:

rm .git/index
git reset --mixed

(по умолчанию используется смешанный вариант)

Согласно документации:

--mixed
Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.

Благодаря torek и bk2204 за помощь в понимании ситуации и небольшое прибегание к поиску наиболее безопасного процесса сброса индекса без потери зафиксированных или рабочих файлов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...