Что это значит, когда 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

и это позволило мне продолжить

Другие вопросы по тегам