---
name: "stg-branch"
section: "1"
platform: "linux"
package: "stgit"
version: "0.18-1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/stg-branch"
---

# stg-branch(1)

Branch operations: switch, list, create, rename, delete, ...

## NAME

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

## SYNOPSIS

```
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 [**stg-init**(1)](/stg-init/1.md)) 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 [**stg-init**(1)](/stg-init/1.md) 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 [**stg-pull**(1)](/stg-pull/1.md) 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 [**stg**(1)](/stg/1.md)
