Package org.eclipse.jgit.api

## Class MergeCommand

- java.lang.Object
- - org.eclipse.jgit.api.GitCommand<MergeResult>
  - - org.eclipse.jgit.api.MergeCommand

All Implemented Interfaces:
  `Callable<MergeResult>`

    public class MergeCommand
    extends GitCommand<MergeResult>

A class used to execute a `Merge` command. It has setters for all supported options and arguments of this command and a `call()` method to finally execute the command. Each instance of this class should only be used for one invocation of the command (means: one call to `call()`)

See Also:
  Git documentation about Merge

### Nested Class Summary

Nested Classes
`static class` `MergeCommand.FastForwardMode` The modes available for fast forward merges corresponding to the `--ff`, `--no-ff` and `--ff-only` options under `branch.<name>.mergeoptions`.

### Field Summary

### Fields inherited from class org.eclipse.jgit.api.GitCommand

`repo`

### Constructor Summary

Constructors
`protected` `MergeCommand​(Repository repo)`

### Method Summary

All Methods Instance Methods Concrete Methods
`MergeResult` `call()` Executes the `Merge` command with all the options and parameters collected by the setter methods (e.g.
`MergeCommand` `include​(String name, AnyObjectId aCommit)`
`MergeCommand` `include​(AnyObjectId aCommit)`
`MergeCommand` `include​(Ref aCommit)`
`MergeCommand` `setCommit​(boolean commit)` Controls whether the merge command should automatically commit after a successful merge
`MergeCommand` `setFastForward​(MergeCommand.FastForwardMode fastForwardMode)` Sets the fast forward mode.
`MergeCommand` `setMessage​(String message)` Set the commit message to be used for the merge commit (in case one is created)
`MergeCommand` `setSquash​(boolean squash)` If `true`, will prepare the next commit in working tree and index as if a real merge happened, but do not make the commit or move the HEAD.
`MergeCommand` `setStrategy​(MergeStrategy mergeStrategy)`

### Methods inherited from class org.eclipse.jgit.api.GitCommand

`checkCallable, getRepository, setCallable`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### MergeCommand

    protected MergeCommand​(Repository repo)

Parameters:
  `repo` -

### Method Detail

#### call

    public MergeResult call()
                     throws GitAPIException,
                            NoHeadException,
                            ConcurrentRefUpdateException,
                            CheckoutConflictException,
                            InvalidMergeHeadsException,
                            WrongRepositoryStateException,
                            NoMessageException

Executes the `Merge` command with all the options and parameters collected by the setter methods (e.g. `include(Ref)`) of this class. Each instance of this class should only be used for one invocation of the command. Don't call this method twice on an instance.

Specified by:
  `call` in interface `Callable<MergeResult>`
Specified by:
  `call` in class `GitCommand<MergeResult>`
Returns:
  the result of the merge
Throws:
  `GitAPIException` - or subclass thereof when an error occurs
  `NoHeadException`
  `ConcurrentRefUpdateException`
  `CheckoutConflictException`
  `InvalidMergeHeadsException`
  `WrongRepositoryStateException`
  `NoMessageException`

#### setStrategy

    public MergeCommand setStrategy​(MergeStrategy mergeStrategy)

Parameters:
  `mergeStrategy` - the `MergeStrategy` to be used
Returns:
  `this`

#### include

    public MergeCommand include​(Ref aCommit)

Parameters:
  `aCommit` - a reference to a commit which is merged with the current head
Returns:
  `this`

#### include

    public MergeCommand include​(AnyObjectId aCommit)

Parameters:
  `aCommit` - the Id of a commit which is merged with the current head
Returns:
  `this`

#### include

    public MergeCommand include​(String name,
                                AnyObjectId aCommit)

Parameters:
  `name` - a name given to the commit
  `aCommit` - the Id of a commit which is merged with the current head
Returns:
  `this`

#### setSquash

    public MergeCommand setSquash​(boolean squash)

If `true`, will prepare the next commit in working tree and index as if a real merge happened, but do not make the commit or move the HEAD. Otherwise, perform the merge and commit the result.

In case the merge was successful but this flag was set to `true` a `MergeResult` with status `MergeResult.MergeStatus.MERGED_SQUASHED` or `MergeResult.MergeStatus.FAST_FORWARD_SQUASHED` is returned.

Parameters:
  `squash` - whether to squash commits or not
Returns:
  `this`
Since:
  2.0

#### setFastForward

    public MergeCommand setFastForward​(MergeCommand.FastForwardMode fastForwardMode)

Sets the fast forward mode.

Parameters:
  `fastForwardMode` - corresponds to the --ff/--no-ff/--ff-only options. --ff is the default option.
Returns:
  `this`
Since:
  2.2

#### setCommit

    public MergeCommand setCommit​(boolean commit)

Controls whether the merge command should automatically commit after a successful merge

Parameters:
  `commit` - `true` if this command should commit (this is the default behavior). `false` if this command should not commit. In case the merge was successful but this flag was set to `false` a `MergeResult` with type `MergeResult` with status `MergeResult.MergeStatus.MERGED_NOT_COMMITTED` is returned
Returns:
  `this`
Since:
  3.0

#### setMessage

    public MergeCommand setMessage​(String message)

Set the commit message to be used for the merge commit (in case one is created)

Parameters:
  `message` - the message to be used for the merge commit
Returns:
  `this`
Since:
  3.5