I have a repository where I had been working on master branch having last added some 10 or so commits which I now wish were on another branch, as they describe work that I now consider experimental (I am still learning good Git practices).
In light of this consideration, I would now like to have these last 10 commits form their own branch so to speak, so that I can have master clean and reserved for “release” / “stable” commits only.
To illustrate, what I have is:
b--b (feature B)
/
X--X--X--Z--Z--Z--Z--Z--Z (master)
\
a--a--a (feature A)
You can see that commits marked with X and Z are all on the master branch, while what I want is commits marked with Z (the now considered experimental “feature Z” work) to lie on their own branch and master ending with the rightmost X. To illustrate, the desired graph:
b--b (feature B)
/
X--X--X (master)
\ \
\ Z--Z--Z--Z--Z--Z (feature Z - the new branch I want)
\
a--a--a (feature A)
That way I will have my master reserved for releases and otherwise stable commits, being able to merge in A, B and Z features as needed.
So how do I move the “Z” commits onto their own branch?
where commit_id is an identifier of that last X commit before b branches off.