git rebase

Shell
git reflog
$ git checkout experiment
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added staged command#The branches are like this
          A---B---C topic
         /
    D---E---F---G master
#git rebase <base> <target>
git rebase master topic
#<target> get moved forward on <base>
#NOTE: commits on <target> change their hash
                  A°--B°--C° topic
                 /
    D---E---F---G masterGit rebase and merge both integrate changes from one branch into another. Where they differ is how it's done. Git rebase moves a feature branch into a master. Git merge adds a new commit, preserving the historythe rebase command integrates changes from one branch into
another. It is an alternative to the better known "merge" 
command. Most visibly, rebase differs from merge by rewriting
the commit history in order to produce a straight,
linear succession of commits.
Source

Also in Shell: