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

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

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.

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

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

Ответы

Ответ 1

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

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

Ответ 2

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

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

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

Из здесь:

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

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

Проверьте в своем удаленном репозитории значение git config core.worktree и git config core.bare

Ответ 3

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

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

С тех пор я прочитал книгу O'Reilly git и теперь являюсь полным конвертером git.