---
name: "hg-commit"
section: "1"
platform: "linux"
package: "mercurial"
version: "7.2.4-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/hg-commit"
---

# hg-commit(1)

commit the specified files or all outstanding changes

## NAME

hg commit - commit the specified files or all outstanding changes

## SYNOPSIS

```
hg commit [OPTION]... [FILE]...
```

## DESCRIPTION

Commit changes to the given files into the repository. Unlike a centralized SCM, this operation is a local operation. See **hg push** for a way to actively distribute your changes.

If a list of files is omitted, all changes reported by **hg status** will be committed.

If you are committing the result of a merge, do not provide any filenames or -I/-X filters.

If no commit message is specified, Mercurial starts your configured editor where you can enter a message. In case your commit fails, you will find a backup of your message in **.hg/last-message.txt**.

The --close-branch flag can be used to mark the current branch head closed. When all heads of a branch are closed, the branch will be considered closed and no longer listed.

The --amend flag can be used to amend the parent of the working directory with a new commit that contains the changes in the parent in addition to those currently reported by **hg status**, if there are any. The old commit is stored in a backup bundle in **.hg/strip-backup** (see **hg help bundle** and **hg help unbundle** on how to restore it).

Message, user and date are taken from the amended commit unless specified. When a message isn't specified on the command line, the editor will open with the message of the amended commit.

It is not possible to amend public changesets (see **hg help phases**) or changesets that have children.

See **hg help dates** for a list of formats valid for -d/--date.

Returns 0 on success, 1 if nothing changed.

Examples:

- •

  commit all files ending in .py:

  ```
  hg commit --include "set:**.py"
  ```

- •

  commit all non-binary files:

  ```
  hg commit --exclude "set:binary()"
  ```

- •

  amend the current commit and set the date to now:

  ```
  hg commit --amend --date now
  ```

## OPTIONS

- **-A, --addremove**

  mark new/missing files as added/removed before committing

- **--close-branch**

  mark a branch head as closed

- **--amend**

  amend the parent of the working directory

- **-s, --secret**

  use the secret phase for committing

- **--draft**

  use the draft phase for committing

- **-e, --edit**

  invoke editor on commit messages

- **--force-close-branch**

  forcibly close branch from a non-head changeset (ADVANCED)

- **-i, --interactive**

  use interactive mode

- **-I,***--include* **\<PATTERN\[+\]\>**

  include names matching the given patterns

- **-X,***--exclude* **\<PATTERN\[+\]\>**

  exclude names matching the given patterns

- **-m,***--message* **\<TEXT\>**

  use text as commit message

- **-l,***--logfile* **\<FILE\>**

  read commit message from file

- **-d,***--date* **\<DATE\>**

  record the specified date as commit date

- **-u,***--user* **\<USER\>**

  record the specified user as committer

- **-S, --subrepos**

  recurse into subrepositories

  \[+\] marked option can be specified multiple times

## ALIASES

```
ci
```
