Rebasing
Rebasing is a type of merge that makes it look as though our changes
were actually made on the main branch rather than on a feature branch.
Once we perform a Rebase we get a new copy of all the commits on our
branch but now they are parented to the tip of the target branch. The
'After Rebasing' diagram below shows the original commits but we should
be aware that the garbage collector will clean these up when it runs.
Pending Rebase
After Rebasing
There is another difference between performing a rebase and merge and
that relates to how the history will look. With a normal merge we'll
have a new commit created that has two parents and hence a branch will
be showing in the audit trail. With a rebase we get to keep a linear
history and the fact another branch was created is lost. See below with
standard merge on the left and a rebase on the right.
Standard Merge History (includes Branch)
Rebase History (Linear)
See the below videos for more details on Rebasing using VisualGit. Then
give it a try for yourself