On Sun, 17 Jun 2012 09:12:26 -0400
Eric Parent <parent.eri...@gmail.com> wrote:
> I've been working on a branch, say '2.1' and made a few commits on
> it. We've made a release and tagged the changeset at which the commit
> was produced, say 'tag2.1'.
> Development continued and a few more commits were made on that
> branch, the '2.1'.
> As the development goes, we think it would be a better idea to
> create a branch '2.2' that starts at the tag where the release was
> made and keep '2.1' only for the maintenance of that release.
> So here's what we have at the moment:
> branch 2.1 : A <- B <- C <- D <- ... <- K
> Here is what we would like to have:
> changesets C up to K to be on a branch 2.2 starting at 'tag2.1':
> branch 2.1: A <- B
> branch 2.2: <- C' <- D' <- E' <- ... <-
> Any hints?
0) $ git checkout 2.1
1) $ git branch 2.2
2) $ git reset --hard tag2.1
1) Create a branch named "2.2" which points to the same commit
the branch "2.1" currently does.
2) Make the "2.1" branch point to the same commit the tag "tag2.1"
points (effectively truncating the branch).
You will have to forcibly push your 2.1 branch to your authoritative
(central) repo if you have it.
Your confusion about how to achieve what you want probably stems from
the fact you think a branch is something special, while in git both
tags and branches are simply references to a specific commit.
What constitutes a line of history then is commit chanining: each
commit references one or more parent commit(s) (except for the root
commit in a repository which references nothing).
Tags and branches are only different when it comes to committing
(committing on a branch updates the reference while committing when you
"have a tag checked out" does not update anything).
You received this message because you are subscribed to the Google Groups "Git
for human beings" group.
To post to this group, send email to email@example.com.
To unsubscribe from this group, send email to
For more options, visit this group at