git-reintegrate - Manage integration branches in Git
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
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.
--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.
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.
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.
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.