Git push только для открытых репозиториев? - PullRequest
19 голосов
/ 27 января 2010

Когда я попробовал «git push origin master» в удаленном репозитории на моем внешнем диске, появилось предупреждение git о том, что в следующих выпусках git по умолчанию будет отказано в передаче в извлечение репозитория. На внешнем диске я зарегистрировал проект и хочу отправить изменения, которые я сделал на своем компьютере, в эти репозитории. Разве «git push origin master» не правильный путь? Должен ли я «git pull ...» в хранилище на моем внешнем диске? Так что я не могу подтолкнуть изменения, а просто потянуть их? Только работа с «голым» хранилищем отличается? Так что, если хранилище на моем внешнем диске было пустым хранилищем, я мог бы внести в него изменения? Правильно ли я понимаю?

Ответы [ 2 ]

23 голосов
/ 27 января 2010

Внимательно прочитайте предупреждение. Новый запрет по умолчанию действует только при отправке в текущую извлеченную ветвь в не-пустом хранилище. Это совершенно нормально, чтобы перейти к любой другой ветке в не-пустом хранилище.

Причина этого в том, что процесс push не имеет прямого доступа к рабочему дереву, поэтому индекс и заголовок ветви изменяются под рабочим деревом. Когда вы впоследствии переходите к рабочему дереву, кажется, что рабочее дерево отменило внесенные изменения, смешанные с любыми изменениями, которые действительно были в разработке. Это очень затрудняет разделение двух наборов изменений.

У подталкивания к другим веткам таких недостатков нет. Затем вы можете перейти в этот репозиторий и при желании объединить эти изменения с извлеченной веткой.

6 голосов
/ 27 января 2010

Вы не должны отправлять в не обнаженное хранилище, потому что принудительное обновление только обновит внутреннее состояние хранилища и не повлияет на извлеченные копии файлов на диске. Таким образом, вы можете столкнуться с проблемами, если начнете выполнять работу в этом репо без предварительного обновления (через git checkout) копий на диске состояния файлов репо.

...