Quick Access
Introduction
          Like the ~ modifier, the ^ modifier also accepts
          an optional number after it.
        
          Rather than specifying the number of generations to go back (what ~ takes),
          the modifier on ^ specifies which parent reference to follow from a merge commit.
          Remember that merge commits have multiple parents, so the path to choose is ambiguous.
        
          Git will normally follow the "first" parent upwards from a merge commit,
          but specifying a number with ^ changes this default behavior.
        
Enough talking, let's see it in action with some examples.
Before the checkout

                
                Here we have a merge commit. If we checkout master^ without the modifier,
                we will follow the first parent after the merge commit.
                
                git checkout master^
              
After the checkout

                
                Easy -- this is what we are all used to.
              
Before the checkout

                
                Now let's try specifying the second parent instead...
                
                git checkout master^2
              
After the checkout

                
                See? We followed the other parent upwards.
              
Before the checkout

                
                The ^ and ~ modifiers can make moving around a commit tree very powerful.
                Even crazier, these modifiers can be chained together! Check this out:
                
                git checkout HEAD~^2~2
              
After the checkout

                
                Lightning fast!
              
To complete this level, create a new branch at the specified destination. Obviously it would be easy to specify the commit directly (with something like C6), but I challenge you to use the modifiers we talked about instead!
      
                  Solve Online