Git is a distributed version control system much like Mercurial, Bazaar and DaRcs.
Official Front Ends
Both Emacs and Git come with Emacs front ends for Git. These front ends support a large subset of Git’s functionality.
- Emacs comes with a generic version control front end called VersionControl or VC. It supports Git and many other version control system (vcs). This is a good choice if you use other vcs besides Git or have no desire to use features unique to Git.
- Git comes with an Emacs front end for Git:
git.el. For more information about this package as well as git-blame.el another library distributed with Git see the README file accompanying these libraries.
If you are running an older Ubuntu version, you might get those Git Emacs contrib files from git-core, but for newer versions you will need to install git-el package with sudo apt-get install git-el.
Third-party Front Ends
These third-party packages are neither part of Git nor Emacs. These front ends support a large subset of Git’s functionality.
- Magit is the most popular front end for Git. If you are new to Git and do not need support for other vcs this is likely the package you should try first.
- Egg (Emacs Got Git) is a fork of Magit. It currently isn’t very actively maintained.
- git-emacs is advertised as “yet another git mode on emacs for newbies”.
- DistributedVersionControl (DVC) is a generic front end similar to VC but specialized to modern dvcs like Git.
- Gited is a Git front end with a dired-like interface.
Extensions
These packages are not “complete” front ends but “only” to certain Git features. Often they can be used in addition to the front ends mentioned above.
- diff-hl highlights uncommitted changes on the fly (see
diff-hl-flydiff-mode). - git-gutter-plus supports reverting, staging, and committing Git hunks straight from the buffer.
- egit is an Emacs Git history interface intended to be similar to
qgit or gitk. Requires git.el. - mo-git-blame is an interactive and iterative major mode for
git blame. - tortoise-git.el is a simple interface to Tortoise Git within Emacs
- Gitsum is a mode to do interactive partial commits with Emacs in the style of
darcs record - GitDwim defines context-aware commands.
- GitCommitMode helps with editing and manipulating commit messages.
- git-link creates a URL representing the current buffer’s location in its GitHub, Bitbucket, Gitorious etc. repository at the current line number or active region.
- GitShow – Quick git way to see a particular revision of a file.
- git-timemachine Step through historic versions of git controlled file using everyone’s favourite editor
Also see
Hosting
- github is a popular website to host and browse git repositories. See GitHub.
- bitbucket is another popular website to host and browse git repositories. See BitBucket.
- gitlab is the commercial version of the self-hosted opensource platform to host and browse git repositories. See GitLab
- NotABug is a free-software code collaboration platform for freely licensed projects. See NotABug.
Blog posts
- Work with Git from Emacs is an article by AlexOtt that provides more information some of the mentioned packages.
- This blob post adds direct
git add and git reset support to VC.
Git CategoryVersionControl