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.