Рабочий процесс Git - Настройка процесса сборки

Отказ от ответственности: я использовал Git некоторое время, но все еще нахожу это запутанным.

Я устанавливаю процесс сборки для проекта и сталкиваюсь с проблемой обновления git-репозитория.

  1. Я создал хранилище на сервере, скажем, C:\MyProject.
  2. Я подключил свой компьютер к хранилищу с помощью SourceTree. Сделайте тягу и получите весь мой код, пока все отлично.
  3. Я делаю коммит, но получаю сообщение об ошибке: "Отказ в обновлении извлеченной ветки... По умолчанию обновление текущей ветки в не-пустом хранилище запрещено"
  4. Немного воспользуюсь 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 с навсегда".

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