2013-04-14 2 views
0

I имеют следующие ветви:Git объединить несколько ветвей

master 
featureA 
featureB 

на нескольких репозиториев Git. Развитие происходит на всех трех ветвях одновременно. Мне нужно объединить featureA в featureB и, наконец, объединить featureB в мастер. В настоящее время я:

Переключить на featureB и слейте из featureA. Переключить на мастер и слиться с особенностьB. Эта процедура включает в себя 2 переключателя, и поскольку мне нужно сделать это около 7 репозиториев, требуется некоторое время.

Есть ли лучший способ сделать это с помощью git?

+0

«так как мне нужно сделать это около 7 репозиториев» - возможно, это проблема. Почему семь репозиториев? Ваши коммутаторы относительно дешевы, правда? (Предположим, что у вас есть чистый репозиторий в противном случае). И git-команды будут относительно быстрыми в любом случае по сравнению с любым слиянием конфликта, которое вам нужно выполнить, и повторным тестированием окончательного объединенного кода. – Rup

+0

Имеют ли эти семь репозиториев один и тот же код? Обычно вы объединяете только один и нажимаете на другие репозитории. – michas

+0

Это знак того, что семь репозиториев должны быть одним хранилищем. – alternative

ответ

1

Вам нужно сделать два шага по каждому из 7 репозиториев. Звучит неплохо для написания сценария оболочки для выполнения необходимых команд git для каждого репо. Я не думаю, что у git есть много для вас, пока ваши репозиции не являются отдельными; вы также можете посмотреть на их подключение через «подмодули» (хотя я не совсем уверен, что это поможет здесь).

1

Это звучит слегка ненормально. Если у вас есть шесть или семь разработчиков, которые работают над featureA или featureB, тогда они уже должны быть синхронизированы друг с другом. То есть, в процессе разработки они толкали/тянули друг с другом или косвенно через назначенный центральный репозиторий. Это то, как они работают вместе при разработке функций.

В этом случае единственное, что остается:

# your 4 steps 
git checkout featureB 
git merge featureA 
git checkout master 
git merge featureB 

После этого каждый разработчик тянет хозяина, и они могут либо удалить featureA и featureB или просто отказаться от них.

Развитие идет с каждым разработчиком, создавая новые ветви функций от мастера

0

Моя рекомендуем сливаясь порядок состоит в следующем.

//merge master to featureA 
git checkout master 
git merge featureA 

//merge featureA to master 
git checkout featureA 
git merge master 

//merge master to featureB 
git checkout master 
git merge featureB 

//merge featureB to master 
git checkout featureB 
git checkout master 

Таким образом, как модификация featureA, так и featureB объединяются для безопасного управления. Кроме того, слияние отсутствует, даже если ранее были какие-либо мастер-модификации.

Однако заказ является сложным. Вот почему есть возможность совершить ошибку, если это руководство. Кажется, что есть инструмент для автоматизации заказа, пожалуйста, найдите в Google.

0

Попробуйте запустить эту команду:

  • мерзавец фотографии мастер
  • мерзавец сливаться featureA featureB

Вы можете объединить все ветви вы желаете в одном шаге.Просто создать цепочку слияний:

  • мерзавец сливаться A B C D E

сольется ФИЛИАЛЫ а, Ь, с, d и е в вас текущей ветви.

Если одна из причин вызывает конфликт, слияние терпит неудачу. Очевидно.