Получение фатальной ошибки в 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 года)
Обычное обходное решение:
Вы можете увидеть это сообщение об ошибке в 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). Все, что я сделал, это закрыть приложение и снова открыть, а затем он начал работать.