Git Noob пытается перенести изменения машины разработки на удаленный производственный сервер - PullRequest
1 голос
/ 22 мая 2011

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

машина разработки имеет ОС Snow Leopard.я установил git.используется git init, add и commit.

на удаленном производственном сервере установлена ​​Ubuntu 10. Я установил git и использовал git init.

затем "ssh: //me@domain.com: 00000 / path_to_project_root / .git master: master"

получаю следующую ошибку:

"отказ от обновления извлеченной ветки: refs /head / master. По умолчанию, обновление текущей ветки в не-пустом хранилище запрещено, потому что это сделаетиндекс и рабочее дерево не соответствуют тому, что вы нажали, и для соответствия рабочего дерева и HEAD потребуется 'git reset --hard'. Вы можете установить переменную конфигурации 'receive.denyCurrentBranch' t 'ignore' или 'warn' в удаленномрепозиторий, позволяющий выдвигать int в его текущую ветвь, однако это не рекомендуется, если вы не решили обновить его рабочее дерево, чтобы оно соответствовало тому, что вы выдавили другим способом. Чтобы подавить это сообщение и сохранить поведение по умолчанию, установите 'receive.denyCurrentBranch'переменная конфигурации для «отказа» ... [удаленный отклонен] master -> master (ветка в настоящий момент извлечена) "

любой онЛ.П. ценится.

1 Ответ

2 голосов
/ 22 мая 2011

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

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

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

Последнее - это "рабочее дерево".

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...