Рабочий процесс Git - Настройка процесса сборки
Отказ от ответственности: я использовал Git некоторое время, но все еще нахожу это запутанным.
Я устанавливаю процесс сборки для проекта и сталкиваюсь с проблемой обновления git-репозитория.
- Я создал хранилище на сервере, скажем, C:\MyProject.
- Я подключил свой компьютер к хранилищу с помощью SourceTree. Сделайте тягу и получите весь мой код, пока все отлично.
- Я делаю коммит, но получаю сообщение об ошибке: "Отказ в обновлении извлеченной ветки... По умолчанию обновление текущей ветки в не-пустом хранилище запрещено"
- Немного воспользуюсь Google, и я понимаю, что в репозитории git на сервере не должно быть master-checked, поэтому я использую Git GUI checkout с опцией "Отсоединиться от локальной ветки". Это устанавливает ветку на сервере в HEAD.
Теперь это часть, где я запутался (дайте мне знать, если я действительно запутался раньше и просто не знаю). Каков рекомендуемый способ обновления кода на сервере? Если я открою репозиторий сервера в Git GUI, у меня не будет возможности сделать выборку. Что, кажется, работает, если я проверяю мастер, но действительно ли это то, что рекомендуется? И если это так, то это будет означать, что я должен извлекать отдельную ветку после каждого обновления, чтобы я мог продолжать делать нажатия на моем рабочем компьютере.
1 ответ
It is a best practice to push to a bare repo: see " concept of bare shared repository in git" and all about "bare" repos -- what, why, and how to fix a non-bare push.
Which means on your server, you need to:
- create a Git repo (you already did)
- clone that repo a bare repo (
git clone --bare yourProjectFolder yourProjectFolder.git
)
(.git
расширение - это соглашение об именах для корневой папки с открытым репо) вместо этого нажмите на репо:
Перейдите в локальный репозиторий и введите:git remote set-url origin /url/repo/repo/yourProjectFolder.git
добавить хук в голом репо (на сервере,
yourProjectFolder.git/hooks/post-receive
), в которой вы- смените каталог (в вашу папку без репо
yourProjectFolder
) unset GIT_DIR
git pull ../yourProjectFolder.git
- смените каталог (в вашу папку без репо
Смотрите больше на " Развертывание удаленного сервера nodejs с навсегда".