Perform a three-way merge.
bzr merge [LOCATION]
The source of the merge can be specified either in the form of a branch, or in the form of a path to a file containing a merge directive generated with bzr send. If neither is specified, the default is the upstream branch or the branch most recently merged using –remember. The source of the merge may also be specified in the form of a path to a file in another branch: in this case, only the modifications to that file are merged into the current working tree.
When merging from a branch, by default bzr will try to merge in all new work from the other branch, automatically determining an appropriate base revision. If this fails, you may need to give an explicit base.
To pick a different ending revision, pass “–revision OTHER”. bzr will try to merge in all new work up to and including revision OTHER.
If you specify two values, “–revision BASE..OTHER”, only revisions BASE through OTHER, excluding BASE but including OTHER, will be merged. If this causes some revisions to be skipped, i.e. if the destination branch does not already contain revision BASE, such a merge is commonly referred to as a “cherrypick”. Unlike a normal merge, Bazaar does not currently track cherrypicks. The changes look like a normal commit, and the history of the changes from the other branch is not stored in the commit.
Revision numbers are always relative to the source branch.
Merge will do its best to combine the changes in two branches, but there are some kinds of problems only a human can fix. When it encounters those, it will mark a conflict. A conflict means that you need to fix something, before you can commit.
Use bzr resolve when you have fixed a problem. See also bzr conflicts.
If there is no default branch set, the first merge will set it (use –no-remember to avoid setting it). After that, you can omit the branch to use the default. To change the default, use –remember. The value will only be saved if the remote location can be accessed.
The results of the merge are placed into the destination working directory, where they can be reviewed (with bzr diff), tested, and then committed to record the result of the merge.
merge refuses to run if there are any uncommitted changes, unless –force is given. If –force is given, then the changes from the source will be merged with the current working tree, including any uncommitted changes in the tree. The –force option can also be used to create a merge revision which has more than two parents.
If one would like to merge changes from the working tree of the other branch without merging any committed revisions, the –uncommitted option can be given.
To select only some changes to merge, use “merge -i”, which will prompt you to apply each diff hunk and file change, similar to “shelve”.
To merge all new revisions from bzr.dev:
bzr merge ../bzr.dev
To merge changes up to and including revision 82 from bzr.dev:
bzr merge -r 82 ../bzr.dev
To merge the changes introduced by 82, without previous changes:
bzr merge -r 81..82 ../bzr.dev
To apply a merge directive contained in /tmp/merge:
bzr merge /tmp/merge
To create a merge revision with three parents from two branches feature1a and feature1b: