Merging multiple branches with git
I have 2 local branches called "develop" and "master"; they are similar. On my company's server there's one "main" repo (production) and several branches that were made by other developers:
$ git branch -a * develop master remotes/origin/HEAD -> origin/master remotes/origin/some-test remotes/origin/feature1 remotes/origin/feature2 remotes开发者_StackOverflow/origin/master
How can I merge remotes/origin/feature1
and remotes/origin/feature2
into my local "master" branch, copy that all into "develop" and start working with actual code in my "develop" branch?
git checkout master
git pull origin feature1 feature2
git checkout develop
git pull . master
(or maybegit rebase ./master
)
The first command changes your current branch to master
.
The second command pulls in changes from the remote feature1
and feature2
branches. This is an "octopus" merge because it merges more than 2 branches. You could also do two normal merges if you prefer.
The third command switches you back to your develop
branch.
The fourth command pulls the changes from local master
to develop
.
Hope that helps.
EDIT: Note that git pull
will automatically do a fetch
so you don't need to do it manually. It's pretty much equivalent to git fetch
followed by git merge
.
I would just "fetch" all of origin:
git fetch origin
now that it is in your repo you can merge the branches into master:
git checkout master
git merge origin/feature1
git merge origin/feature2
now you can merge master into develop
git checkout develop
git merge master
if you are going to commit back to origin then I would setup a local tracking branch so you can have local access and push directly to origin:
git branch --track origin/feature1 feature1
精彩评论