let’s say if I have 2 branches
topic and master
if I am on topic branch, and run git rebase master does it rebase master or rebase topic branch?
doing git rebase --help gave me this
Assume the following history exists and the current branch is “topic”:
A---B---C topic
/
D---E---F---G master
From this point, the result of either of the following commands:
git rebase master
git rebase master topic
would be:
A'--B'--C' topic
/
D---E---F---G master
NOTE: The latter form is just a short-hand of git checkout topic followed by git rebase master. When rebase exits topic will remain the checked-out branch.
And if I want to achieve this D---E---F---G---A---B---C master, should I switch to master and run git rebase -i topic?
And if I run git rebase -i topic try to squash A,B,C to C to become D---E---F---G---C master, I get noop
Assuming you start out with a tree that looks like this
You’ll want to run 2 commands
git rebase masterto make it look like thisthen from
masterrungit merge topic, which will do a fast forward merge, and you’ll end up with a tree that looks like thisRunning that command would result in a tree that looks like this
This is the (somewhat edited) git documentation for
rebase, hopefully this will help:If you are on
topicand rungit rebase master, that means commits A, B and C are going into a temporary area.At this point the temporary state of the tree looks like this
Commits A, B, C that were saved into the temporary area are “recommitted” to the branch you are currently on
topic.Running
git rebase topicfrommasterwould perform the exact same steps, except instead of putting commits A, B, C into the temporary area, it would put commits E, F G into the temporary area.