Что это значит, когда git говорит, что файл "нуждается в обновлении"?
Я не могу найти приличного объяснения сообщения "[file]: needs update", которое время от времени выплевывает git. Даже официальный Git FAQ объясняет это как TODO. Если кто-то может объяснить, а) что это значит; и б) как это исправить, буду крайне признателен.
6 ответов
Это означает, что вы пытаетесь объединить изменения откуда-то, но изменения включают в себя изменения в файле, который является грязным (в настоящее время изменен в вашем рабочем дереве). Вам нужно зафиксировать свои ожидающие изменения или спрятать их, вытащить / перебазировать / объединить / все, что вы делаете, чтобы обновить, и удалить
Как отмечали другие, сообщение о необходимости обновления означает, что файл загрязнен или, другими словами, устарел. Но вместо того, чтобы делать сброс и начинать все заново, можно просто git status
а потом git add <file>
если это в измененном списке. Потому что вы уже могли добавить файл раньше, но затем изменили его. Это случилось со мной, и с этим простым add
Я решил проблему.
Войдите в свой производственный / целевой сервер, cd
в каталог, содержащий ваше приложение, и выполните эти две команды.
1. Сбросить до последней версии
ВНИМАНИЕ, это удалит все ваши изменения:
git reset --hard HEAD
2. Потяните изменения
git pull origin master
Как говорится в ответе на другой связанный вопрос, сообщение просто означает, что у вас есть ожидающие изменения. Вы также получаете это, например, если вы делаете некоторые изменения с git add
, тогда передумай и сделай git reset HEAD file
с намерением начать все сначала.
Эта ошибка может возникать, когда процесс rebase вносит дополнительные изменения в файлы, которые не находятся в целевой ветви.
Для меня самая сложная часть была с .gitattributes
файл в моем репо. Новый бинарный тип файла был добавлен в другую ветку, но его обработка была принудительной как текстовый файл. Когда файл был загружен из репозитория git, EOL (на самом деле это байты двоичных значений) были заменены, что привело к двоичной разнице.
Добавление новой записи для обработки нового типа файла как двоичного файла и повторная попытка всего процесса решили проблему для меня.
В моем случае я продолжал получать
assets/ElipseThree.png: needs update
You must edit all merge conflicts and then
mark them as resolved using git add
У меня были эти файлы в моем каталоге, но они были переименованы в моей текущей ветке. Чтобы исправить, я побежал
$ git mv assets/ElipseThree.png assets/elipseThree.png
$ git add assets/elipseHalfFull.png
$ git rebase --continue
и это позволило мне продолжить