Manage integration branches in git
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)
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.
--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.
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\(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.
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.