Да, я пробовал перед публикацией. Проблема заключалась в моих подмодулях, которые продолжали портить мой индексный файл (не знаю почему).
karellm
@karellm Вы узнали, почему это происходит?
crmpicco
Нет, если честно, я не исследовал причину этого, и это тоже перестало происходить.
karellm
Совет: по моему опыту, это может быть связано с тем, что папка NFS не обновляется. Если ваше репо находится в NFS, просто подождите несколько минут, прежде чем пытаться исправить проблему. У меня это было после загрузки с одной машины, а затем проверки статуса на другой, обе машины устанавливали один и тот же NFS.
ggll
Ответы:
107
Индексный файл поврежден, но его легко восстановить. Просто удали ...
rm .git/index
Затем вы можете повторно добавить файлы, которые пытаетесь обработать.
Как было сказано выше, он не работал из-за конфликта с подмодулем, который снова и снова разрушал мой индекс ... Я удалил подмодуль, удалил индекс и добавил все. Наконец-то это сработало. Благодаря!
karellm 09
3
Почему это происходит? У меня такое случалось дважды за последние две недели, и я не вижу для этого причины.
crmpicco
7
У меня это не сработало. До этой ошибки у меня была в основном чистая рабочая копия. После удаления индексного файла и запуска git add .он вел себя так, как если бы каждый файл был новым и требовал фиксации.
Марк
1
Не работает и при наличии подмодуля. Просто сбросьте (ответ ниже).
TimZaman
Если обнаружил, что после запуска этого мне пришлось сделать, git restore --stagedи это
устранило
90
Если вы хотите сохранить локальные изменения, используйте следующее:
$ rm .git/index
$ git reset HEAD .
> Unstaged changes after reset:
modified foo.txt
modified bar.txt
Есть идеи, почему это происходит? Это случилось со мной примерно 4-5 раз за последние две недели.
crmpicco
1
Этот ответ здесь лучший. Кроме того, обратите внимание, если вы используете подмодули git: удалите также эти индексные файлы (они находятся в .git/modules/src). Это заставило меня задуматься, почему ошибка все еще возникает после удаления (основного) индексного файла.
Graftak
Я предполагаю, что это могло произойти по стандартным причинам, процесс остановился на полпути, закончилось место на диске и т. Д. Хотя в моем случае я мог бы использовать символическую ссылку на папку git для создания каталогов, которые будут использоваться для сборки вместо svn externals , хотя это странно, поскольку единственная операция с этими репозиториями - это только чтение, чтобы выполнить полный сброс папок сборки.
jgmjgm
2
Тем, у кого есть ошибки даже после удаления индекса и которые не могут выполнить сброс. Если вы хотите сохранить свои изменения, сделайте следующее (не решение, а уродливый обходной путь!).
Сделайте резервную копию ваших файлов, то, что я собираюсь сказать, должно сработать, но сделайте это на всякий случай.
Удалите папку .git
Клонировать свой репозиторий (неважно где) Я сделал это в текущем каталоге
Скопируйте созданный из каталога clone .git в текущий каталог
Удалите клонированный каталог
6. Необязательно, если вы снова использовали для него извлечение ветки.
Статус Git теперь должен отслеживать изменения, как и положено, и все ваши команды git должны работать
Мой случай был таким, как описано выше, git испортил свои ссылки ... Git logпоказывал "ваша ветка кажется сломанной" и git fsckпредупреждал меня о плохих ссылках. Подумал, смогу ли я это исправить, но я бы потратил на это много времени, поэтому я выбрал уродливый обходной путь.
Ответы:
Индексный файл поврежден, но его легко восстановить. Просто удали ...
Затем вы можете повторно добавить файлы, которые пытаетесь обработать.
источник
git add .
он вел себя так, как если бы каждый файл был новым и требовал фиксации.git restore --staged
и этоЕсли вы хотите сохранить локальные изменения, используйте следующее:
источник
.git/modules/src
). Это заставило меня задуматься, почему ошибка все еще возникает после удаления (основного) индексного файла.Тем, у кого есть ошибки даже после удаления индекса и которые не могут выполнить сброс. Если вы хотите сохранить свои изменения, сделайте следующее (не решение, а уродливый обходной путь!).
Мой случай был таким, как описано выше, git испортил свои ссылки ...
Git log
показывал "ваша ветка кажется сломанной" иgit fsck
предупреждал меня о плохих ссылках. Подумал, смогу ли я это исправить, но я бы потратил на это много времени, поэтому я выбрал уродливый обходной путь.источник