Your company here — click to reach over 10,000 unique daily visitors

git-feature - Man Page

Create/Merge feature branch

Examples (TL;DR)


git-feature [-a|--alias PREFIX] [-s|--separator SEPARATOR] [-r|--remote [REMOTE_NAME]] [--from START_POINT] NAME...

git-feature [-a|--alias PREFIX] [-s|--separator SEPARATOR] finish [--squash] NAME...


Create or merge the given feature branch. The feature branch name is made from the PREFIX, the SEPARATOR, and the NAME joined together.

The default PREFIX is feature and SEPARATOR is /, which can be changed (see Options and Git Config for details).

The branch NAME may be specified as multiple words which will be joined with -. If the branch name contains the word finish or is another OPTION, -- should be passed to stop OPTION parsing. See the Examples for details.


-a PREFIX, --alias PREFIX:

The branch prefix to use, or feature if not supplied.

-s SEPARATOR, --separator SEPARATOR:

The separator to use for joining the branch prefix and the branch name, or / if not supplied.

-r [REMOTE_NAME], --remote [REMOTE_NAME]:

Setup a remote tracking branch using remote_name. If remote_name is not supplied, use origin by default.


Setup a start point when the branch created. If --from is not supplied, use the current branch by default. This option will be ignored when finishing a branch.


Merge and delete the feature branch.


Run a squash merge when finishing the feature branch.


The name of the feature branch.

Git Config

You can configure the default branch prefix and separator via git config options.


$ git config --global add git-extras.feature.prefix "prefix"


$ git config --global add git-extras.feature.separator "-"


Start a new feature:

$ git feature dependencies
$ (feature/dependencies) git commit -m "Some changes"

Finish a feature with --no-ff merge:

$ (feature/dependencies) git checkout master
$ git feature finish dependencies

Finish a feature with --squash merge:

$ (feature/dependencies) git checkout master
$ git feature finish --squash dependencies

Publish a feature upstream:

$ git feature dependencies -r upstream

Use custom branch prefix:

$ git alias features "feature -a features"
$ git features dependencies
$ (features/dependencies) ...
$ (features/dependencies) git checkout master
$ git features finish dependencies

Use custom branch separator:

$ git feature -s - dependencies
$ (feature-dependencies) ...
$ (feature-dependencies) git checkout master
$ git feature -s - finish dependencies

Use custom branch prefix and separator from git config with multiple words:

$ git config --global --add git-extras.feature.prefix "features"
$ git config --global --add git-extras.feature.separator "."
$ git feature dependency tracking
$ (features.dependency-tracking) ...
$ (features.dependency-tracking) git checkout master
$ git feature finish dependency tracking

Use a git-feature option or the finish command as part of a branch name:

$ git feature -- finish remote
$ (feature/finish-remote) git commit -m "Some changes"
$ (feature/finish-remote) git checkout main
$ git feature finish -- finish remote


Written by Jesús Espino <jespinog@gmail.com>
Modified by Mark Pitman <mark.pitman@gmail.com>
Modified by Carlos Prado <carlos.prado@cpradog.com>
Modified by Austin Ziegler <halostatue@gmail.com>

Reporting Bugs


See Also

<https://github.com/tj/git-extras>, git-create-branch(1), git-delete-branch(1)

Referenced By


December 2023 Git Extras