2017-01-19 14 views
0

У меня есть git repo на бит-ведро с ведущей веткой, где работают некоторые разработчики.git pull с одного сервера, слияния и push на 2-й сервер

Теперь я хочу разместить это репо на своем собственном сервере gitlab с веткой обновления с Bitbucket и еще двумя ветвями dev и stag, которые созданы и управляются самостоятельно.

enter image description here

Теперь то, что я хотел.

  • Шаг 1: тянуть master ветвь от мерзавца облака на моей локальной машине,
  • Шаг 2: создать новую ветку из master имена dev и stag и нажать на мерзавцем сервер.
  • Шаг 3: Я работаю только на **dev** и **stag** и только нажимаю изменения с соответствующими ветвями на git server.
  • Шаг 4: некоторые разработчики нажимают код на git cloud **master** ветвь, затем я вытаскиваю главную ветвь, объединяю изменения с помощью **dev** и **stag**, а затем нажимаем все 3 на git сервер.

Я хочу, чтобы главная ветка оставалась актуальной с облаком git. а dev и промежуточная версия также содержат обновленный код ведущей ветки, включая работу с минами, которую я сделал на dev и stag. Какой поток я могу сделать?

Note: I don't want any automatic process /hooks.

+0

Я вытаскиваю из git cloud с помощью 'master' с удаленной ветвью из источника, а затем добавляю новое удаленное уничтожение с помощью мастер-ветви на git-сервер, там я создаю еще две ветки' dev' и 'master'. –

+0

И что не работает, как ожидалось, в чем проблема? – Vampire

+0

@ Vampire i ящик обеих ветвей на gitlab. Теперь на моем локальном компьютере у меня git remote -v' есть 2 'origin' и' dest'.Затем я хочу получить ветвь dev и stag на локальной машине, я попробовал «git fetch dest && git checkout dest stag» '' ' * [новая ветка] dev -> dest/dev * [новая ветка] stag - > dest/stag error: pathspec 'dest' не соответствует ни одному файлу, известному git. error: pathspec 'stag' не соответствует ни одному файлу, известному git '' ' Затем я запускаю:' git branch', тогда у меня есть только ветвь 'master'. –

ответ

2

На локальном компьютере, вы можете попробовать шаги, как показано ниже:

1. Перенести из мерзавца облака (репо на BitBucket) мерзавцу сервера (репо на gitlab).

git clone <URL for git cloud> 
git remote add dest <URL for git server> 
git checkout -b dev 
git checkout -b stag 
git push dest --all 

2. Синхронизация изменяется от мерзавец облачных мастер-ветви к мерзавец сервера репо.

Когда мастер ветвь на мерзавец облаке обновляется, в местном репо, вы можете использовать следующие шаги:

git checkout master 
git pull origin master 
git checkout dev 
git pull origin master --rebase 
git checkout stag 
git pull origin master --rebase 

Теперь все три ветвей содержат обновления главного ответвления от мерзавца облака.

+0

Ваши решения работает, но когда я список филиалов с помощью 'мерзавец ветви -a' он показывает это ' dev', 'master', ' * stag', 'пультов ДУ/приемник/dev', ' пультов дистанционного управления/Dest/master', 'пультов ДУ/приемник/stag', ' перепятнышки/происхождение/HEAD -> происхождение/master', 'перепятнышки/происхождение/dev' и ' перепятнышки/происхождение/master' Почему происхождение имеет Dev слишком? –

+1

'dev, master, stag' означает локальные ветви. 'remotes/dest/dev, remotes/dest/master, remotes/dest/stag' означает ветви в вашем удаленном dest (gitlab). 'remotes/origin/dev и remotes/origin/master' означает ветви в удаленном источнике (git cloud). 'remotes/origin/HEAD -> origin/master' означает, что ваша текущая ветка является мастером. 'git branch -a' перечислить все ветви в локальных и пультах. –

+0

ОК, я понял, что там была ветка dev на git cloud, я не проверял это. Первоначально я думал, что на gitcloud есть только ведущая ветка. –

0

git checkout dest stag С dest и stag интерпретируются как пути для обновления из индекса, но не те пути, в вашем хранилище. Что вы хотите сделать, это git checkout stag или git checkout -b stag dest/stag или git branch stag dest/stag.