I have a hierarchy of commits in my local repo and I want to roll back to an old commit and apply some, not all, of the changes from the HEAD commit. How do I do this?

Consider the following scenario. I have the following commits in my repo:

> 
> Commit 6 (HEAD)  
> 
>  Commit 5  
> 
>  Commit 4  
> 
>  Commit 3  
> 
>  Commit 2  
> 
>  Commit 1
> 
> 
> 

I reset to commit 2 as below

```
git reset --hard commit2

```

Now I want, for example, to merge all the changes applied up until commit 6 but without those in commit 3 and with some of those in commit 5.

If I do this:

```
git merge commit6

```

I will end up having everything in the HEAD without the selectiveness I am after.

How can I achieve my target?

Cheers
AF