Что означает предупреждение git "Обновление текущей проверенной ветки"?

Когда я делаю git push, я вижу следующее:

warning: updating the currently checked out branch; this may cause confusion,
as the index and working tree do not reflect changes that are now in HEAD.

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

Как я это вызвал и как это исправить?

3 ответа

Решение

Это происходит, когда вы продвигаетесь к не голому репо. Голый репо - это тот, который состоит исключительно из .git каталог; Репозиторий без обнажения также включает в себя проверку. В общем, вы не должны подталкивать к не голому репо; фактически, в будущей версии git это будет запрещено. Если вы нажмете на непроигрышное репо, то ГЛАВА этого репо будет не синхронизирована с индексом и рабочей копией.

Если вы создаете репо, к которому люди захотят подтолкнуть, вы должны создать его, используя git init --bare (а также git init --bare --shared если доступ к нему требуется нескольким учетным записям), или git clone --bare если вы создаете его путем клонирования существующего репо.

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

Смотрите " Как опубликовать Git-репозиторий":

Пустое хранилище - это хранилище без извлеченной рабочей копии кода. Он содержит только базу данных git.
Как правило, вы никогда не должны вставлять в репозиторий, содержащий изменения в рабочей копии.
Чтобы этого не произошло, мы делаем хранилище сервера пустым хранилищем - у него нет рабочей копии

Отсюда:

Обратите внимание, что целью "push" обычно является пустой репозиторий (т. Е. Без собственного рабочего дерева).
Вы также можете отправить в репозиторий, у которого есть извлеченное рабочее дерево, но рабочее дерево не будет обновлено при загрузке.
Это может привести к непредсказуемым результатам, если ветвь, к которой вы переходите, является извлеченной веткой.

Если определено отдельное рабочее дерево (которое может, например, соответствовать DocumentRoot веб-сервера), вам необходимо:

Проверьте в вашем удаленном хранилище значение git config core.worktree а также git config core.bare

Я обнажил свой репозиторий, клонировав новый, пустой, репозиторий из моего испорченного, на всякий случай сохранив перепутанный, и заменив его своим клонированным голым.

Я новичок в git, и когда я настраивал репозиторий, я забыл использовать опцию --bare. Спасибо за вашу помощь!

С тех пор я читал Git-книгу О'Рейли, и теперь я абсолютный новообращенный.

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