git-branch(1)
=============

NAME
----
git-branch - Create a new branch, or remove an old one

SYNOPSIS
--------
[verse]
'git-branch' [[-f] <branchname> [<start-point>]]
'git-branch' (-d | -D) <branchname>

DESCRIPTION
-----------
If no argument is provided, show available branches and mark current
branch with star. Otherwise, create a new branch of name <branchname>.
If a starting point is also specified, that will be where the branch is
created, otherwise it will be created at the current HEAD.

With a `-d` or `-D` option, `<branchname>` will be deleted.


OPTIONS
-------
-d::
	Delete a branch. The branch must be fully merged.

-D::
	Delete a branch irrespective of its index status.

-f::
	Force a reset of <branchname> to <start-point> (or current head).

<branchname>::
	The name of the branch to create or delete.

<start-point>::
	Where to create the branch; defaults to HEAD. This
	option has no meaning with -d and -D.


Examples
~~~~~~~~

Start development off of a known tag::
+
------------
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
$ cd my2.6
$ git branch my2.6.14 v2.6.14 <1>
$ git checkout my2.6.14

<1> These two steps are the same as "checkout -b my2.6.14 v2.6.14".
------------

Delete unneeded branch::
+
------------
$ git clone git://git.kernel.org/.../git.git my.git
$ cd my.git
$ git branch -D todo <1>

<1> delete todo branch even if the "master" branch does not have all
commits from todo branch.
------------

Author
------
Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <junkio@cox.net>

Documentation
--------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

