git-feature - Man Page
Create/Merge feature branch
Examples (TL;DR)
- Create and switch to a new feature branch:
git feature feature_branch
- Merge a feature branch into the current branch creating a merge commit:
git feature finish feature_branch
- Merge a feature branch into the current branch squashing the changes into one commit:
git feature finish --squash feature_branch
- Send changes from a specific feature branch to its remote counterpart:
git feature feature_branch --remote remote_name
Synopsis
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...
Description
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.
Options
- -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.
- --from START_POINT:
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.
- finish:
Merge and delete the feature branch.
- --squash:
Run a squash merge when finishing the feature branch.
- NAME:
The name of the feature branch.
Git Config
You can configure the default branch prefix and separator via git config options.
- git-extras.feature.prefix:
$ git config --global add git-extras.feature.prefix "prefix"
- git-extras.feature.separator:
$ git config --global add git-extras.feature.separator "-"
Examples
- 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
Author
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)