How to use interactive rebase on the first (root) commit of a branch?

You want to rebase to the root commit of your master branch. More specifically, to squash the two commits, you need to run

git rebase -i --root

and then substitute squash for pick on the second line in the buffer of the editor that pops up:

pick 123456 a                                                        
squash abcdef b

I refer you to the git-rebase man page for more details about that flag:

--root

Rebase all commits reachable from <branch>, instead
of limiting them with an <upstream>. This allows you to rebase
the root commit(s) on a branch. […]

Example of an interactive rebase of the root

# Set things up
$ mkdir testgit
$ cd testgit
$ git init

# Make two commits
$ touch README
$ git add README
$ git commit -m "add README"
$ printf "foo\n" > README
$ git commit -am "write 'foo' in README"

# Inspect the log
$ git log --oneline --decorate --graph
* 815b6ca (HEAD -> master) write 'foo' in README
* 630ede6 add README

# Rebase (interactively) the root of the current branch: 
# - Substitute 'squash' for 'pick' on the second line; save and quit the editor.
# - Then write the commit message of the resulting commit; save and quit the editor.
$ git rebase -i --root
[detached HEAD c9003cd] add README; write 'foo' in README
 Date: Sat May 16 17:38:43 2015 +0100
 1 file changed, 1 insertion(+)
 create mode 100644 README
Successfully rebased and updated refs/heads/master.

# Inspect the log again
$ git log --oneline --decorate --graph
* c9003cd (HEAD -> master) add README; write 'foo' in README

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)