On centralized version control systems like CVS, Emacs supports
creating new branches as part of a commit operation. When committing
a modified VC fileset, type C-u C-x v v (
with a prefix argument; see Advanced Control in C-x v v). Then Emacs prompts
for a revision ID for the new revision. You should specify a suitable
branch ID for a branch starting at the current revision. For example,
if the current revision is 2.5, the branch ID should be 2.5.1, 2.5.2,
and so on, depending on the number of existing branches at that point.
This procedure will not work for distributed version control systems
like git or Mercurial. For those systems you should use the prefix
vc-create-tag (C-u C-x v s) instead.
To create a new branch at an older revision (one that is no longer the head of a branch), first select that revision (see Switching between Branches). Your procedure will then differ depending on whether you are using a locking or merging-based VCS.
On a locking VCS, you will need to lock the old revision branch with C-x v v. You’ll be asked to confirm, when you lock the old revision, that you really mean to create a new branch—if you say no, you’ll be offered a chance to lock the latest revision instead. On a merging-based VCS you will skip this step.
Then make your changes and type C-x v v again to commit a new revision. This creates a new branch starting from the selected revision.
After the branch is created, subsequent commits create new revisions on that branch. To leave the branch, you must explicitly select a different revision with C-u C-x v v.