SYNOPSIS

git reintegrate --create <name> [<base>]
git-reintegrate --generate <name> [<base>]
git-reintegrate --add=<name>
git-reintegrate (--edit | --rebuild | --cat | --status) [<name>]
git reintegrate (--continue | --abort)

DESCRIPTION

This tool is a helper to be able to manage integration branches in Git easily. It does so by specifying a list of merges to be applied on top of a base branch. Each one of these merges can have a description that will be used as the merge commit message.

This instruction sheet can autogenerated and modified in various ways through the command line, or manually edited.

Finally the integration branch can be rebuilt, and previous conflicts resolutions can be reused thanks to git rerere.

OPTIONS

--create

Create a new integration branch.

If no base is specified, master is assumed.

--generate

Generates the instruction sheet basied on an existing integration branch. The messages of each merge commit will be parsed to construct the instructions. The messages should be in the standard form Merge branch 'name' (or remote branch).

If no base is specified, master is assumed.

--[no-]rebuild

Rebuild the integration branch.

--edit

Edit the instruction sheet.

--cat

Print the instruction sheet.

--status

Prints the status of the integration branch.

--add=<branch>

Appends a line merge <branch> to the instruction list, causing that branch to be included in the integration branch when it is next rebuilt. This option may be specified multiple times to add multiple branches.

--continue

Restart the rebuild process after having resolved a merge conflict.

--abort

Abort the rebuild operation.

--[no-]autocontinue

Continues automatically if the rerere mechanism manages to resolve all conflicts during a merge.

If --continue or --abort are specified then no other options may be given.

CONFIGURATION

integration.autocontinue

Sets the default for the --autocontinue option.

integration.autorebuild

Automatically rebuild the integration branch after creating/editing it if --no-rebuild is not specified.

FORMAT OF INSTRUCTIONS

The instruction sheet consists of a series of instructions which begin in column zero, each of which may be followed by indented comments. The following instructions are supported:

base <ref>

Resets the state of the integration branch to the specified revision. This should always be the first instruction in the instruction sheet, and should appear only at the top of the instruction sheet.

merge <ref> [<options>]

Merges the specified ref into the integration branch. Any comments following the instruction are appended to the merge commit\(cqs commit message.

If any options are given after the ref (and on the same line) then these are passed to git merge. This may be useful for specifying an alternative merge strategy for a branch.

fixup <ref>

Picks up an existing commit to be applied on top of a merge as a fixup.

commit

Adds an empty commit with the specified message mostly to be used as a comment.

pause

Pauses the rebuild process, so the user can do certain actions manually, for example fixing a wrong conflict resoltion.

. <args...>

Ignores this command and its description. This can be used to remove a branch from the integration branch without needing to delete it and its description from the instruction sheet.

Example

base master

merge my-experimental-feature

  I think this is a good idea, but want to dogfood it before I
  decide whether to submit it upstream.

merge my-site-specific-changes

  Some changes to suit my environment.  DO NOT SUBMIT THESE.