28.1 Version Control
A version control system is a program that can record multiple versions of a source file, storing information such as the creation time of each version, who made it, and a description of what was changed.
The Emacs version control interface is called VC. VC commands work with several different version control systems; currently, it supports Bazaar, CVS, Git, Mercurial, Monotone, RCS, SRC, SCCS/CSSC, and Subversion. Of these, the GNU project distributes CVS, RCS, and Bazaar.
VC is enabled automatically whenever you visit a file governed by a version control system. To disable VC entirely, set the customizable variable vc-handled-backends
to nil
(see Customizing VC).
To update the VC state information for the file visited in the current buffer, use the command vc-refresh-state
. This command is useful when you perform version control commands outside Emacs (e.g., from the shell prompt), or if you put the buffer’s file under a different version control system, or remove it from version control entirely.
• Introduction to VC |   | How version control works in general. |
• VC Mode Line |   | How the mode line shows version control status. |
• Basic VC Editing |   | How to edit a file under version control. |
• Log Buffer |   | Features available in log entry buffers. |
• Registering |   | Putting a file under version control. |
• Old Revisions |   | Examining and comparing old versions. |
• VC Change Log |   | Viewing the VC Change Log. |
• VC Undo |   | Canceling changes before or after committing. |
• VC Ignore |   | Ignore files under version control system. |
• VC Directory Mode |   | Listing files managed by version control. |
• Branches |   | Multiple lines of development. |
• Miscellaneous VC |   | Various other commands and features of VC. |
• Customizing VC |   | Variables that change VC’s behavior. |