Объединение нескольких ветвей с помощью git
У меня есть 2 локальных хранилища, которые называются "develop" и "master"; они подобны. На моем сервере компании есть 1 "основное" репо (производство) и несколько веток, которые были сделаны другими разработчиками:
$ git branch -a
* develop
master
remotes/origin/HEAD -> origin/master
remotes/origin/some-test
remotes/origin/feature1
remotes/origin/feature2
remotes/origin/master
Как я могу объединить remotes/origin/feature1
и remotes/origin/feature2
в свое местное "главное" репо, скопировать все, чтобы "развиваться" и начать работать с реальным кодом в моем "развивающемся" репо?
Ответы
Ответ 1
-
git checkout master
-
git pull origin feature1 feature2
-
git checkout develop
-
git pull . master
(или, может быть, git rebase ./master
)
Первая команда изменяет вашу текущую ветвь на master
.
Вторая команда вносит изменения в удаленные ветки feature1
и feature2
. Это слияние "осьминога", потому что оно объединяет более двух ветвей. Вы также можете сделать два обычных слияния, если хотите.
Третья команда возвращает вас к ветки develop
.
Четвертая команда переносит изменения с локального master
на develop
.
Надеюсь, что это поможет.
EDIT: Обратите внимание, что git pull
автоматически выполнит fetch
, поэтому вам не нужно делать это вручную. Это в значительной степени эквивалентно git fetch
, за которым следует git merge
.
Ответ 2
Я бы просто "взял" все происхождение:
git fetch origin
Теперь, когда вы находитесь в своем репо, вы можете объединить ветки в мастер:
git checkout master
git merge origin/feature1
git merge origin/feature2
теперь вы можете объединить мастера в разработку
git checkout develop
git merge master
если вы собираетесь перевести на исходный код, тогда я бы установил локальную ветку отслеживания, чтобы вы могли получить локальный доступ и напрямую нажать на источник:
git branch --track origin/feature1 feature1