Commit (version control)

Operation of adding changes to a version control repository

This article is about the verb in revision control. For the noun, see changeset. For other uses, see Commit.

In version control systems, a commit is an operation which sends the latest changes of the source code to the repository, making these changes part of the head revision of the repository. Unlike commits in data management, commits in version control systems are kept in the repository indefinitely. Thus, when other users do an `update` or a `checkout` from the repository, they will receive the latest committed version, unless they specify that they wish to retrieve a previous version of the source code in the repository. Version control systems allow rolling back to previous versions easily. In this context, a commit within a version control system is protected as it is easily rolled back, even after the commit has been applied.

## Usage

[edit]

### Git

[edit]

To commit a change in git on the command line, assuming git is installed, the following command is run:[1]

` git commit -m 'commit message' `

This is also assuming that the files within the current directory have been staged as such:[2]

` git add . `

The above command adds all of the files in the working directory to be staged for the git commit. After the commit has been applied, the last step is to push the commit to the given software repository, in the case below named `origin`, to the branch `main`:[3]

`git push origin main`

Also, a shortcut to add all the unstaged files and make a commit at the same time is:[4]

` git commit -a -m 'commit message' `

### Mercurial (hg)

[edit]

To commit a change in Mercurial on the command line, assuming hg is installed, the following command is used:[5]

` hg commit --message 'Commit Message' `

This is also assuming that the files within the current directory have been staged as such:

` hg add `

The above command adds all of the files in the working directory to be staged for the Mercurial commit. After the commit has been applied, the last step is to push the commit to the given software repository, to the `default` branch:

`hg push`

## See also

[edit]

* Commit (data management)
* Atomic commit § Revision control

## References

[edit]

1. ^ "What's the Git Commit Command? Our 2023 Beginner's Guide". careerfoundry.com. 2022-06-13. Retrieved 2023-11-27.
2. ^ "The git add command for beginners". www.theserverside.com. Retrieved 2023-11-27.
3. ^ "GIT Push and Pull Tutorial". DataCamp. 2019-07-01. Retrieved 2023-11-27.
4. ^ "Git - git-commit Documentation". www.git-scm.com. Retrieved 2017-10-04.
5. ^ "Hg - Mercurial -Quickstart". www.mercurial-scm.com. Retrieved 2018-11-05.

* v
* t
* e

Version control software

Years, where available, indicate the date of first stable release. Systems with names in italics are no longer maintained or have planned end-of-life dates.

Local only|

| Free/open-source|

* RCS (1982)
* SCCS (1973)

|

Proprietary|

* The Librarian (1969)
* Panvalet (1970s)
* PVCS (1985)
* QVCS (1991)

Client–server|

| Free/open-source|

* CVS (1986, 1990 in C)
* CVSNT (1998)
* QVCS Enterprise (1998)
* Subversion (2000)

|

Proprietary|

* AccuRev SCM (2002)
* Azure DevOps
* Server (via TFVC) (2005)
* Services (via TFVC) (2014)
* ClearCase (1992)
* CMVC (1994)
* Dimensions CM (1980s)
* DSEE (1984)
* Integrity (2001)
* Perforce Helix (1995)
* SCLM (1980s?)
* Software Change Manager (1970s)
* StarTeam (1995)
* Surround SCM (2002)
* Synergy (1990)
* Team Concert (2008)
* Vault (2003)
* Visual SourceSafe (1994)

Distributed|

| Free/open-source|

* BitKeeper (2000)
* Breezy (2017)
* Code Co-op (1997)
* Darcs (2002)
* DCVS (2002)
* Fossil (2007)
* Git (2005)
* GNU arch (2001)
* GNU Bazaar (2005)
* Mercurial (2005)
* Monotone (2003)

|

Proprietary|

* Azure DevOps
* Server (via Git) (2013)
* Services (via Git) (2014)
* TeamWare (1992)
* Plastic SCM (2006)

Concepts|

* Baseline
* Branch
* Trunk
* Changeset
* Commit
* Gated
* Delta compression
* Interleaved
* File comparison
* Fork
* Merge
* Monorepo
* Repository
* Tag

* Category
* Comparison
* List

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template