Accidentally branched off of the wrong branch, and when I want to merge into the master I have to merge both branches
GitVersion ControlMergeGit Problem Overview
So I created a branch off of another branch I was already creating, and now when I try to merge the branches into master, I have run into the situation where I have to merge both branches.
Here is a diagram
>Master->
>> ->Branch 1 -> Branch 2
I want to be able to merge just the changes on branch 2 onto master without having to merge the changes on Branch 1 if that makes sense. I looked into reset and revert, but it seems like these things will delete all the changes I made with branch 2. Any ideas?
Thanks
Git Solutions
Solution 1 - Git
Try git rebase --onto with the following syntax:
To put branch2's changes on to the master without including branch1's
git rebase --onto master branch1 branch2
Relevant output from git help rebase
:
> Here is how you would transplant a topic branch based on one branch to another, to
> pretend that you forked the topic branch from the latter branch, using rebase --onto
.
>
> First let’s assume your topic is based on branch next. For example, a feature
> developed in topic depends on some functionality which is found in next.
>
> o---o---o---o---o master
>
> o---o---o---o---o next
>
> o---o---o topic
>
> We want to make topic forked from branch master; for example, because the functionality
> on which topic depends was merged into the more stable master branch.
> We want our tree to look like this:
>
> o---o---o---o---o master
> |
> | o'--o'--o' topic
>
> o---o---o---o---o next
>
> We can get this using the following command:
>
> git rebase --onto master next topic
Keep in mind the risks and pitfalls of rebasing, mentioned here: http://git-scm.com/book/en/Git-Branching-Rebasing
Solution 2 - Git
One way to do it is, use cherry-pick
. Do a git log branch2
and find the commit id's you want and then switch to master
branch using git checkout master
then use git cherry-pick <commit_id>
Refer to this post for more details
https://stackoverflow.com/questions/881092/how-to-merge-a-specific-commit-in-git