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

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

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

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.

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 know 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

