stg-branch(1)
=============

NAME
----
stg-branch - Branch operations: switch, list, create, rename, delete, ...

SYNOPSIS
--------
[verse]
'stg' branch 
'stg' branch [--merge] [--] <branch>
'stg' branch --list
'stg' branch --create [--] <new-branch> [<committish>]
'stg' branch --clone [--] [<new-branch>]
'stg' branch --rename [--] <old-name> <new-name>
'stg' branch --protect [--] [<branch>]
'stg' branch --unprotect [--] [<branch>]
'stg' branch --delete [--force] [--] <branch>
'stg' branch --cleanup [--force] [--] [<branch>]
'stg' branch --description=<description> [--] [<branch>]

DESCRIPTION
-----------

Create, clone, switch between, rename, or delete development branches
within a git repository.

'stg branch'::
        Display the name of the current branch.

'stg branch' <branch>::
        Switch to the given branch.

OPTIONS
-------
-l::
--list::
        List each branch in the current repository, followed by its
        branch description (if any). The current branch is prefixed
        with '>'. Branches that have been initialized for StGit (with
        linkstg:init[]) are prefixed with 's'. Protected branches are
        prefixed with 'p'.

-c::
--create::
        Create (and switch to) a new branch. The new branch is already
        initialized as an StGit patch stack, so you do not have to run
        linkstg:init[] manually. If you give a committish argument,
        the new branch is based there; otherwise, it is based at the
        current HEAD.
+
StGit will try to detect the branch off of which the new
branch is forked, as well as the remote repository from which
that parent branch is taken (if any), so that running
linkstg:pull[] will automatically pull new commits from the
correct branch. It will warn if it cannot guess the parent
branch (e.g. if you do not specify a branch name as
committish).

--clone::
        Clone the current branch, under the name <new-branch> if
        specified, or using the current branch's name plus a
        timestamp.
+
The description of the new branch is set to tell it is a clone
of the current branch. The parent information of the new
branch is copied from the current branch.

-r::
--rename::
        Rename an existing branch.

-p::
--protect::
        Prevent StGit from modifying a branch -- either the current
        one, or one named on the command line.

-u::
--unprotect::
        Allow StGit to modify a branch -- either the current one, or
        one named on the command line. This undoes the effect of an
        earlier 'stg branch --protect' command.

--delete::
        Delete the named branch. If there are any patches left in the
        branch, StGit will refuse to delete it unless you give the
        '--force' flag.
+
A protected branch cannot be deleted; it must be unprotected
first (see '--unprotect' above).
+
If you delete the current branch, you are switched to the
"master" branch, if it exists.

--cleanup::
        Remove the StGit information for the current or given branch. If there
        are patches left in the branch, StGit refuses the operation unless
        '--force' is given.
+
A protected branch cannot be cleaned up; it must be unprotected first
(see '--unprotect' above).
+
A cleaned up branch can be re-initialised using the 'stg init'
command.

-d DESCRIPTION::
--description DESCRIPTION::
        Set the branch description.

--merge::
        Merge work tree changes into the other branch.

--force::
        Force a delete when the series is not empty.

StGit
-----
Part of the StGit suite - see linkman:stg[1]
