Rebasing commits to another branch

To start with, we are going to perform a very simple rebase where we will introduce a new file, commit this file, make a change to it, and then commit it again so that we end up with 2 new commits.

Getting ready

Before we start, we need a repository to work in. You can use a previous clone of jgit, but to get a close to identical output from the example, you can clone the jgit repository.

The jgit repository can be cloned as follows:

$ git clone https://git.eclipse.org/r/jgit/jgit chapter4
$ cd chapter4

How to do it…

We start by creating a local branch and then make two commits by performing the following steps; these are the commits that we want to rebase onto another branch:

  1. Check out a new branch, rebaseExample, that tracks origin/stable-3.1:
     $ git checkout -b rebaseExample --track origin/stable-3.1
    Branch rebaseExample set up to track remote branch stable-  3.1  from origin.
    Switched to a new branch 'rebaseExample'
    
  2. Make two commits on the rebaseExample branch as follows:
    $ echo "My Fishtank
    
    Gravel, water, plants
    Fish, pump, skeleton" > fishtank.txt
    $ git add fishtank.txt
    $ git commit -m "My brand new fishtank"
    [rebaseExample 4b2c2ec] My brand new fishtank
     1 file changed, 4 insertions(+)
     create mode 100644 fishtank.txt
    $ echo "mosquitos" >> fishtank.txt
    $ git add fishtank.txt
    $ git commit -m "Feeding my fish"
    [rebaseExample 2132d88] Feeding my fish
     1 file changed, 1 insertion(+)
    
  3. Then, we rebase the change on top of the origin/stable-3.2 branch instead.
    $ git rebase origin/stable-3.2
    First, rewinding head to replay your work on top of it...
    Applying: My brand new fishtank
    Applying: Feed the fish
    

How it works

When you execute git rebase, Git starts by finding the common ancestor of the current HEAD branch and the branch you want to rebase to. When Git finds merge-base, it will find the commits that are not available on the branch you are rebasing onto. Git will simply try to apply those commits one by one.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset