org.eclipse.jgit.api

## Class CommitCommand

- java.lang.Object
- - org.eclipse.jgit.api.GitCommand<RevCommit>
  - - org.eclipse.jgit.api.CommitCommand

All Implemented Interfaces:
  Callable<RevCommit>

    public class CommitCommand
    extends GitCommand<RevCommit>

A class used to execute a `Commit` command. It has setters for all supported options and arguments of this command and a `call()` method to finally execute the command.

See Also:
  Git documentation about Commit

### Field Summary

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

`repo`

### Constructor Summary

Constructors
`protected` `CommitCommand(Repository repo)`

### Method Summary

All Methods Instance Methods Concrete Methods
`RevCommit` `call()` Executes the `commit` command with all the options and parameters collected by the setter methods of this class.
`PersonIdent` `getAuthor()`
`PersonIdent` `getCommitter()`
`String` `getMessage()`
`CommitCommand` `setAll(boolean all)` If set to true the Commit command automatically stages files that have been modified and deleted, but new files not known by the repository are not affected.
`CommitCommand` `setAmend(boolean amend)` Used to amend the tip of the current branch.
`CommitCommand` `setAuthor(PersonIdent author)` Sets the author for this `commit`.
`CommitCommand` `setAuthor(String name, String email)` Sets the author for this `commit`.
`CommitCommand` `setCommitter(PersonIdent committer)` Sets the committer for this `commit`.
`CommitCommand` `setCommitter(String name, String email)` Sets the committer for this `commit`.
`CommitCommand` `setHookOutputStream(PrintStream hookStdOut)` Set the output stream for hook scripts executed by this command.
`CommitCommand` `setInsertChangeId(boolean insertChangeId)` If set to true a change id will be inserted into the commit message An existing change id is not replaced.
`CommitCommand` `setMessage(String message)`
`CommitCommand` `setNoVerify(boolean noVerify)` Sets the `noVerify` option on this commit command.
`CommitCommand` `setOnly(String only)` Commit dedicated path only.
`CommitCommand` `setReflogComment(String reflogComment)` Override the message written to the reflog

### 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

#### CommitCommand

    protected CommitCommand(Repository repo)

Parameters:
  `repo` -

### Method Detail

#### call

    public RevCommit call()
                   throws GitAPIException,
                          NoHeadException,
                          NoMessageException,
                          UnmergedPathsException,
                          ConcurrentRefUpdateException,
                          WrongRepositoryStateException,
                          RejectCommitException

Executes the `commit` command with all the options and parameters collected by the setter methods of this class. Each instance of this class should only be used for one invocation of the command (means: one call to `call()`)

Specified by:
  `call` in interface `Callable<RevCommit>`
Specified by:
  `call` in class `GitCommand<RevCommit>`
Returns:
  a `RevCommit` object representing the successful commit.
Throws:
  `NoHeadException` - when called on a git repo without a HEAD reference
  `NoMessageException` - when called without specifying a commit message
  `UnmergedPathsException` - when the current index contained unmerged paths (conflicts)
  `ConcurrentRefUpdateException` - when HEAD or branch ref is updated concurrently by someone else
  `WrongRepositoryStateException` - when repository is not in the right state for committing
  `RejectCommitException` - if there are either pre-commit or commit-msg hooks present in the repository and at least one of them rejects the commit.
  `GitAPIException` - or subclass thereof when an error occurs

#### setMessage

    public CommitCommand setMessage(String message)

Parameters:
  `message` - the commit message used for the `commit`
Returns:
  `this`

#### getMessage

    public String getMessage()

Returns:
  the commit message used for the `commit`

#### setCommitter

    public CommitCommand setCommitter(PersonIdent committer)

Sets the committer for this `commit`. If no committer is explicitly specified because this method is never called or called with `null` value then the committer will be deduced from config info in repository, with current time.

Parameters:
  `committer` - the committer used for the `commit`
Returns:
  `this`

#### setCommitter

    public CommitCommand setCommitter(String name,
                                      String email)

Sets the committer for this `commit`. If no committer is explicitly specified because this method is never called then the committer will be deduced from config info in repository, with current time.

Parameters:
  `name` - the name of the committer used for the `commit`
  `email` - the email of the committer used for the `commit`
Returns:
  `this`

#### getCommitter

    public PersonIdent getCommitter()

Returns:
  the committer used for the `commit`. If no committer was specified `null` is returned and the default `PersonIdent` of this repo is used during execution of the command

#### setAuthor

    public CommitCommand setAuthor(PersonIdent author)

Sets the author for this `commit`. If no author is explicitly specified because this method is never called or called with `null` value then the author will be set to the committer or to the original author when amending.

Parameters:
  `author` - the author used for the `commit`
Returns:
  `this`

#### setAuthor

    public CommitCommand setAuthor(String name,
                                   String email)

Sets the author for this `commit`. If no author is explicitly specified because this method is never called then the author will be set to the committer or to the original author when amending.

Parameters:
  `name` - the name of the author used for the `commit`
  `email` - the email of the author used for the `commit`
Returns:
  `this`

#### getAuthor

    public PersonIdent getAuthor()

Returns:
  the author used for the `commit`. If no author was specified `null` is returned and the default `PersonIdent` of this repo is used during execution of the command

#### setAll

    public CommitCommand setAll(boolean all)

If set to true the Commit command automatically stages files that have been modified and deleted, but new files not known by the repository are not affected. This corresponds to the parameter -a on the command line.

Parameters:
  `all` -
Returns:
  `this`
Throws:
  `JGitInternalException` - in case of an illegal combination of arguments/ options

#### setAmend

    public CommitCommand setAmend(boolean amend)

Used to amend the tip of the current branch. If set to true, the previous commit will be amended. This is equivalent to --amend on the command line.

Parameters:
  `amend` -
Returns:
  `this`

#### setOnly

    public CommitCommand setOnly(String only)

Commit dedicated path only.

This method can be called several times to add multiple paths. Full file paths are supported as well as directory paths; in the latter case this commits all files/directories below the specified path.

Parameters:
  `only` - path to commit (with `/` as separator)
Returns:
  `this`

#### setInsertChangeId

    public CommitCommand setInsertChangeId(boolean insertChangeId)

If set to true a change id will be inserted into the commit message An existing change id is not replaced. An initial change id (I000...) will be replaced by the change id.

Parameters:
  `insertChangeId` -
Returns:
  `this`

#### setReflogComment

    public CommitCommand setReflogComment(String reflogComment)

Override the message written to the reflog

Parameters:
  `reflogComment` -
Returns:
  `this`

#### setNoVerify

    public CommitCommand setNoVerify(boolean noVerify)

Sets the `noVerify` option on this commit command.

Both the `pre-commit` and `commit-msg` hooks can block a commit by their return value; setting this option to `true` will bypass these two hooks.

Parameters:
  `noVerify` - Whether this commit should be verified by the pre-commit and commit-msg hooks.
Returns:
  `this`
Since:
  3.7

#### setHookOutputStream

    public CommitCommand setHookOutputStream(PrintStream hookStdOut)

Set the output stream for hook scripts executed by this command. If not set it defaults to `System.out`.

Parameters:
  `hookStdOut` - the output stream for hook scripts executed by this command
Returns:
  `this`
Since:
  3.7