Получение фатальной ошибки в git для многоступенчатых записей

Используя Git версию 2.2.0 с движком единства на OS X и захотелось передать мой код. Я добавил все и не получил сообщение об ошибке. затем commit -m и получил это сообщение об ошибке:

fatal: multiple stage entries for merged file 'Assets/Prefabs/Resources'

Не замечая этого, я нажал, что не выдал сообщение об ошибке, на самом деле сказал Everything up-to-date Поэтому я проверил битбакет (там, где репо удерживается), и он не показал мое сообщение. поэтому я проверил свой локальный журнал и также не показывал свою фиксацию.

Я заглянул в Google для ответа... и ничего. что это за ошибка? и как я могу это исправить?

Ответ 1

Первое обходное решение, которое, как представляется, работает с последними версиями Git (2.3+, Q2 + 2015), упоминается в grant более свежий ответ:

  • Удалить индекс

    $ rm .git/index
    
  • Добавить все

    $ git add -A
    
  • Фиксировать

    $ git commit -a
    

Оригинальный ответ (конец 2014 года)
Обычное обходное решение:

  • снова повторяет повторное репо в новое локальное репо
  • добавить изменения от первого репо ко второму:

    $ cd /patH/to/second/cloned/repo
    $ git --work-tree=/path/to/first/repo add .
    

Вы можете увидеть это сообщение об ошибке в read-cache.c, обсуждаемом в этом патче ( " read-cache.c: убедитесь, что удаленные записи удалены) и введены в Git 2.2 commit. < ш > Поскольку это так недавно, возможно, что понижение класса Git до 2.1 было бы достаточно, чтобы не повлиять на этот патч.

OP Daniel Toebe добавляет в комментарии:

Проблема произошла на моем macbook, который решил свалиться на меня, а другая ошибка компьютера поместила меня в мои проекты.

Ответ 2

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

Я смог исправить эту проблему, удалив файл .git/index в моем репозитории, подобно тому, что предложил @slider (я считаю, что он ошибся в пути).

rm .git/index

Затем мне пришлось добавить и скопировать мои локальные изменения снова

git add -A
git commit -m "..."

Затем я смог удаленно нажать.

Что такое индекс git и как он релевантен?

Что такое сделка с индексом git?

git "index" - это место, где вы размещаете файлы, которые вы хотите передать в репозиторий git.

Прежде чем вы выполните "фиксацию" (checkin) файлов в репозитории git, вы должны сначала поместить файлы в индекс git.

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

Изменить: похоже, что это связано с Mac (на основе комментариев), поэтому, если это помогает, я на OSX 10.10 и git версии 2.3.4 установлен через brew.

Ответ 3

rm .git/index
git reset

после удаления индекса вам нужно воссоздать его с помощью git reset

Ответ 4

Вы можете удалить индексный файл Git из вашего проекта. В корне вашего проекта выполните следующую команду:

rm .git/index

После этого Git он работает.

Ответ 5

Я пробую другое решение, и оно работает для меня. Ниже приведены мои варианты.

#cd .git
#rm index
#cd ..
#git add .

Ответ 6

Если это происходит в подмодуле

Индексный файл находится внутри родительского каталога .git:

.git/modules/your_project_structure/index

В подмодуле нет каталогов с именем .git (по крайней мере, в проекте, над которым я работаю), существует только файл .git, который сообщает вам (и git), где искать git этого проекта.

Git статус показывает изменения, которые я не делал

После удаления индексных файлов и выполнения git reset я столкнулся с множеством необъяснимых изменений, и жесткий reset не помогал.

Предупреждение, вы потеряете все свои изменения, поэтому скопируйте их и нажмите перед тем, как продолжить.

Индекс казался поврежденным, поэтому я удалил его со следующими командами.

git rm -rf --cached .
git reset --hard HEAD

Ответ 7

Я только что получил эту ошибку с Github Desktop Client (OSX). Все, что я сделал, это закрыть приложение и снова открыть, а затем он начал работать.