Почему я иногда вижу, что “Имя файла записи" не обновлено.Не удается объединить ”. после "git reset --hard" и "git pull"?
Вопрос
Иногда, когда я делаю следующее...
git reset --hard
HEAD is now at 0123abde comment is here
git pull
Updating 0123abde..456789fa
Я получаю сообщение об ошибке...
error: Entry 'filename' not uptodate. Cannot merge.
Единственное решение, которое я нашел, - это 'git reset --hard', удалить файлы-нарушители, а затем выполнить 'git pull'.Мне это кажется неправильным.Разве полная перезагрузка не должна удалять все локальные изменения, что позволит мне получить последнюю версию без каких-либо проблем со слиянием?Я неправильно использую git?:)
Это на компьютере CI, поэтому любые изменения здесь нежелательны.Я использую git версии 1.6.1.9.g97c34 в Windows Vista.
Решение
Общая идея , лежащая в основе "Entry 'filename' not uptodate. Cannot merge.
" есть:
У вас есть изменения в файлах в вашем рабочем каталоге, которые будут перезаписаны, удалены или иным образом потеряны, если будет продолжена проверка и переход в новую ветку.
IT было сообщено что это сообщение может быть "ложным" в какой-то момент (потенциально потому, что"git pull
" не обновлял индекс перед попыткой слияния), но исправление было в Git1.6.1.
Однако это все еще может быть в mSysGit 1.6.1, так что вы видите ту же ошибку в более поздней версии mSysGit ?(например, 1.6.3)
Другие советы
У меня была такая же проблема, и я переименовал файл, который был причиной этого, и выполнил git pull.Он извлек этот отсутствующий файл и устранил проблему.
Самое простое решение, которое я нашел для этой проблемы, это:
git add .
git merge --abort
У меня была такая же проблема, когда я пытался запустить
git merge --abort
Чтобы заставить это сработать, я внес изменения, которых не хотел.Как только я это сделал, git смог успешно отменить их.