Yes, this is possible. But remember that it can be dangerous to rewrite 
history that has been shared with others (push), so make sure that your 
team are on board and ready to do some resetting in their own repositories 
if they have already pulled this state.

What you have done here is branched out three times, and merged each branch 
back separately.

Before we do anything, let's make a "backup" branch of your current master:

git checkout master
git branch backup

If you want to completely linearize the history, you need take master back 
to the commit before merging in the first branch (the 4th blue ball from 
the bottom). Let's call that revision A:

git checkout master
git reset --hard A

OK, now we have a foundation we can build something linear on. Let's do the 
first branch. Find the revision/SHA of the last commit in this branch 
before it was merged (that would be the 6th blue ball from the bottom). 
Let's call this branch C-branch (where the last commit is C). Recreate the 
branch like this:

git checkout -b C-branch C

Now, we want to update C-branch with the latest changes in master (there 
are two commits in master after C-branch diverged):

git rebase master

Now the two last commits in C-branch should be "on top" of the last commits 
in master branch, and can therefore be fast-forward merged (i.e. linearly):

git checkout master
git merge C-branch

Now, onward to the next branch. Like before, find the SHA of the last 
commit in the branch, that is the 9th blue ball from the bottom). Let's 
call this commit D. As before, we create a branch for it:

git checkout -b D-branch D

Now rebase master, and merge (fast-forward), just like we did for the first 

git rebase master
git checkout master
git merge D-branch

One more to go. Find the commit E in the last branch, the 2nd blue ball *from 
the top*, create a branch E-branch for it, rebase master, and merge back:

git checkout -b E-branch E
git rebase master
git checkout master
git merge E-branch

After that, it should all be linear. If you run into any conflicts or 
problems on the way, keep cool, read Git's error messages properly, and ask 
again if you need more help. 

You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To view this discussion on the web visit 
To post to this group, send email to git-users@googlegroups.com.
To unsubscribe from this group, send email to 
For more options, visit this group at 

Reply via email to