node package manager

git-merge-distinct

git-merge-distinct

Merges multiple branches that contain non-conflicting changes to a particular set of paths together.

Usage

git-merge-distinct [<options>] [<branch glob>]

branch glob is an optional glob that specifies which branches to consider.

Options:

  -n, --no-commit              perform the merge but do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing
  -m, --message <message>      override the default commit message
  -i, --include <path glob>    only branches with changes modifying paths matching this pattern will be included
  -x, --exclude <path glob>    any branches with changes modifying paths matching this pattern will be excluded
  -h, --help                   output usage information
  -V, --version                output the version number
  -d, --debug                  output debug information

Note that the command creates a new commit without updating the current ref, as the resultant commit is usually used for staging a deployment and then thrown away. If you want to create or update a ref to point to the created ref, you should use git branch or git update-ref accordingly.

Installation

  • Install Git, Node.js (tested against v0.10.35) and npm
  • Run npm install -g git-merge-distinct. You may need sudo.

Examples

Create a new commit by merging the branches starting with "blog/" with changes modifying only paths under "app/posts" into the current HEAD.

$ git merge-distinct -i 'app/posts/**' 'blog/**'

Merge all branches with changes modifying distinct paths into the current HEAD.

$ git merge-distinct

Merge all branches with changes modifying paths under /static, ignoring those that modify js or coffee files.

$ git merge-distinct -i 'static/**' -x '**/*.js' -x '**/*.coffee'