Как перенести ветку GitHub на сервер - PullRequest
0 голосов
/ 28 марта 2019

В моем проекте я создал новую ветвь с именем dev и хочу отправить эту ветку на сервер, но, похоже, она продолжает выдвигать основную ветвь.

GitHub:

  • Две ветви GitHub: Master и Dev

На сервере:

  • У меня есть производственный сайт: example.com
  • и промежуточный сайт: dev.example.com

Мой рабочий процесс:

  1. Я работаю локально, затем нажимаю на GitHub Dev
  2. Затем перейдите на промежуточный сайт: dev.example.com, чтобы я смог протестировать
  3. Как только тестирование закончено, я объединяю Dev с Master и толкаю Master к Production.

Вот что я хочу сделать.

В данный момент я застрял, отправляя ветку Dev на промежуточный сервер: dev.example.com

Вот мой локальный конфигурационный файл git:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[branch "origin"]
    remote = git@github.com:xxxx/xxxxxxxx.git
    merge = refs/heads/master

[remote "origin"]
    url = git@github.com:daugaard47/povertyresolutions.git
    fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]
    remote = origin
    merge = refs/heads/master

[remote "production"]
    url = ssh://root@140.xx.xx.xx/var/repo/site.git
    fetch = +refs/heads/*:refs/remotes/production/*

[remote "staging"]
    url = ssh://root@140.xx.xx.xx/var/repo/dev.git
    fetch = +refs/heads/*:refs/remotes/dev/*

[branch "dev"]
    remote = staging
    merge = refs/heads/dev

На моем сервере есть каталог репо: с dev.git & site.git

После того, как я нажимаю на Dev Branch, я запускаю git push staging, чтобы перейти на мой dev.example.com, но, кажется, вместо этого нажимаю мою ветку Git Master.

Это то, что находится в моем dev.git/hooks/post-receive файле:

#!/bin/sh
git --work-tree=/var/www/dev --git-dir=/var/repo/dev.git checkout -f

Это в моем site.git/hooks/post-receive файле:

#!/bin/sh
git --work-tree=/var/www/laravel --git-dir=/var/repo/site.git checkout -f

Я уверен, что упускаю что-то простое, но любая помощь будет признательна.

1 Ответ

0 голосов
/ 28 марта 2019

Позвольте мне порекомендовать следующую ветку конфигурацию:

git config branch.master.remote production
git config branch.dev.remote staging

и следующие удаленные ссылки config:

git config remote.production.push refs/heads/master:refs/remotes/production/master
git config remote.staging.push refs/heads/dev:refs/remotes/staging/dev

На стороне сервера я рекомендую проверить, какие пульты обновляются; post-receive hook подается со списком на стандартный ввод , поэтому добавьте чек к своим hooks:

while read old_hash new_hash ref; do
    if [ "$ref" = refs/heads/master ]; then
        git … checkout …
    fi
done
...