GIT-REINTEGRATE(1)

NAME
git-reintegrate - Manage integration branches in Git

SYNOPSIS

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

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 be 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 based 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.

--list
    List all the current integration branches.

--delete
    Delete an integration branch. It doesn’t delete the branch itself, only the integration information.

--apply
    Applies the instruction sheet of the integration branch on top of the current branch. If a branch to merge is already completely merged in the current branch, it’s skipped.

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’s 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 resolution.

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