How can I take the set of commits in my branch, and rebase them to a temporary branch, and then rebase back to main?
More details-
My branch, my-branch
depends on another code change feature1
that a co-worker should push soon.
I don't want to wait for him, so I created temp-feature1
that contains the desired change.
My plan was to rebase my-branch
above temp-feature1
, and rebase again to main
once main
contains the desired commit.
This is what I did:
During develop
git checkout main
git checkout -b temp-feature1
# commit temp changes that I want to depend on (feature1)
git checkout my-branch
And now I can develop without waiting for my college's commit.
Once feature1
is merged to main
I thought I can simply do -
git checkout main
git pull
git checkout my-branch
git rebase main
And remove my temp-feature1
commit from the log, becuase it's already in main
.
However, the rebase to main returned
Current branch my-branch is up to date.
And temp-feature1
commit was still there.
Is there any way to get this workflow?
CodePudding user response:
Your desired workflow is totally normal and correct! The problem is merely that you gave the wrong rebase
command. You should say
git rebase --onto main temp-feature1 my-branch
This will rip just your my-branch
branch commits off of temp-feature1
and shove them onto the end of main
.
Before:
A -- B -- C (main) -- H -- I (temp-feature) -- X -- Y (my-branch)
After:
A -- B -- C (main) -- X -- Y (my-branch)
(PS You need to stop confusing master
and main
, I'm assuming that you mean main
everywhere you say master
. If you have both main
and master
you are probably in deep trouble.)