Git push только для открытых репозиториев?

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

2 ответа

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

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

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

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

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