2016-10-29 4 views
1

В моей установке у меня есть три операции РЕПО:Нужно ли объединять ветку в режиме репо?

  1. Голые Репо на удаленном сервере (/op/git/proj.git)
  2. Не-голые репо на удаленном сервере (/var/www/proj/.git)
  3. Не-голые репо на локальной машине (/var/www/proj/.git)

Голый репо является источником как для обычных репозиториев на местном, так и удаленном.

Когда я делаю фиксацию на местном, я делаю локальный push, чтобы обнажить репо, а затем pull на обычном удаленном репо, и я получаю свои изменения на пульте дистанционного управления.

Теперь, я хочу merge Отрасль A до master Какой способ использовать? (Предположим, что master является текущей ветви на обоих РЕПО)

Метод 1
1. local$ git merge A
2. local$ git push origin master
3. remote$ git pull origin master

Способ 2
1. local$ git merge A
2 . remote$ git merge A

Я не уверен, что второй метод - это все, что мне нужно делать или нет, другими словами, поскольку вы не можете делать такие вещи, как checkout и , в голом репо, вам нужно что-то сделать для голого репо после merge ?

ответ

2

Используйте метод 1.

Метод 2 будет работать только тогда, когда git merge A будет быстро вперед на локальных и удаленных. Если какая-либо из операций git merge A приведет к фиксации слияния (а не ускоренной перемотке вперед), ветви мастера будут расходиться.

В общем, объединение одной ветви в нескольких местах редко бывает практичным.

Вам нужно что-то сделать для голого репо после слияния?

Просто нажмите на него, вот и все.

+0

Это правильный ответ (и выше), я просто хочу добавить комментарий, что весь процесс слияния использует как индекс, так и рабочее дерево для хранения всех промежуточных результатов. В то время как у открытого репозитория есть индекс, само определение «голого репозитория» - «не имеет рабочего дерева», поэтому причина, по которой вы * не можете * объединиться в голом репозитории, заключается в том, что отсутствует критический элемент для процесса слияния. – torek