# magit/magit

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/magit-magit).**

7,138 stars · 865 forks · Emacs Lisp · GPL-3.0

## Links

- GitHub: https://github.com/magit/magit
- Homepage: https://magit.vc
- awesome-repositories: https://awesome-repositories.com/repository/magit-magit.md

## Description

Magit is a complete Git interface that runs inside Emacs, providing a full-featured porcelain for version control operations without leaving the editor. It renders repository state as structured, collapsible sections within Emacs buffers, and manages Git command execution through a transactional process model with automatic buffer refresh and error handling. The interface exposes all configuration through Emacs' standard customization system and uses a transient command framework for context-sensitive menu-driven Git operations.

What distinguishes Magit is its granular control over every stage of the version control workflow. Users can select individual diff hunks or lines for staging and unstaging directly within Emacs buffers, compose commit messages using pre-filled templates with guidelines, and create branches from any existing commit, tag, or reference rather than only the current HEAD. The interface supports line-by-line file blame annotation, side-by-side revision comparison via Ediff, and commit range bisection for debugging. Destructive operations require explicit user confirmation to prevent accidental data loss.

The tool covers the full spectrum of Git operations including branch management, merging, rebasing, cherry-picking, and remote repository operations such as cloning, fetching, pulling, and pushing. It provides interactive history browsing with commit log viewing, file history inspection, and arbitrary revision diffing. Conflict resolution presents conflicting file sections side by side for choosing or editing the final version. Additional capabilities include Git bundle creation, patch application, per-branch Git variable configuration, and Git configuration editing from within Emacs.

Documentation and configuration are accessible through Emacs' built-in help and customization systems, with all options exposed through the standard Emacs customization interface.

## Tags

### Part of an Awesome List

- [Git and Version Control](https://awesome-repositories.com/f/awesome-lists/devtools/git-and-version-control.md) — Provides a complete Git interface within Emacs for all version control operations. ([source](https://docs.magit.vc/magit))
- [Revision Diff Display](https://awesome-repositories.com/f/awesome-lists/devtools/diff/revision-diff-display.md) — Compares the current buffer against the index or any specified revision with word-level highlighting. ([source](https://docs.magit.vc/Diff-Options.html))

### Development Tools & Productivity

- [Git Porcelain Wrappers](https://awesome-repositories.com/f/development-tools-productivity/git-porcelain-wrappers.md) — Ships a complete Git porcelain interface inside Emacs for commits, branches, and diffs.
- [Branch Management](https://awesome-repositories.com/f/development-tools-productivity/branch-management.md) — Provides visual branch management including creation, switching, merging, and deletion.
- [Branch Creation](https://awesome-repositories.com/f/development-tools-productivity/branch-management/branch-creation.md) — Provides interactive branch creation from any commit, tag, or reference within Emacs. ([source](https://docs.magit.vc/Branch-Commands.html))
- [Staging Interfaces](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/staging-interfaces.md) — Provides an Emacs-based staging area for selectively staging hunks, files, or regions.
- [Commit Recording](https://awesome-repositories.com/f/development-tools-productivity/commit-recording.md) — Records staged modifications as new commits with amend and fixup workflow support. ([source](https://docs.magit.vc/Common-Commands.html))
- [Commit Finalization with Messages](https://awesome-repositories.com/f/development-tools-productivity/commit-recording/commit-finalization-with-messages.md) — Records staged changes as new commits with user-written messages and template support. ([source](https://docs.magit.vc/Commit-Mode-and-Hooks.html))
- [Buffer-Based UI Renderers](https://awesome-repositories.com/f/development-tools-productivity/emacs-extensions/buffer-based-ui-renderers.md) — Renders the entire Git interface as structured, collapsible sections within Emacs text buffers.
- [Git Repository Explorers](https://awesome-repositories.com/f/development-tools-productivity/file-explorers/git-repository-explorers.md) — Ships an interactive Emacs interface for navigating commit history, file trees, and branch references. ([source](https://docs.magit.vc/magit))
- [Index Staging Operations](https://awesome-repositories.com/f/development-tools-productivity/file-indexing-utilities/staged-file-indexers/index-staging-operations.md) — Stages file changes to the Git index, preparing them for the next commit. ([source](https://docs.magit.vc/Common-Commands.html))
- [Git Blame Viewers](https://awesome-repositories.com/f/development-tools-productivity/git-blame-viewers.md) — Provides enhanced, readable views of git blame information for file annotation. ([source](https://docs.magit.vc/magit))
- [Git Branching & Merging](https://awesome-repositories.com/f/development-tools-productivity/git-branching-merging.md) — Provides full branch creation, switching, merging, rebasing, and deletion within Emacs.
- [Git Diff Viewers](https://awesome-repositories.com/f/development-tools-productivity/git-diff-viewers.md) — Displays file-level and hunk-level diffs between working tree, index, and arbitrary revisions.
- [Remote Change Integration](https://awesome-repositories.com/f/development-tools-productivity/local-file-syncing/remote-change-integration.md) — Fetches changes from a remote repository and merges them into the current branch. ([source](https://docs.magit.vc/Common-Commands.html))
- [Git Push Operations](https://awesome-repositories.com/f/development-tools-productivity/local-file-syncing/remote-repository-syncing/git-push-operations.md) — Sends local commits to a configured remote repository via the Git push command. ([source](https://docs.magit.vc/Common-Commands.html))
- [Merge Conflict Resolution](https://awesome-repositories.com/f/development-tools-productivity/merge-conflict-resolution.md) — Resolves merge conflicts by presenting conflicting sections side by side for editing.
- [Git History Navigation](https://awesome-repositories.com/f/development-tools-productivity/project-history-navigation/git-history-navigation.md) — Provides interactive commit log, file revision, and blame navigation within Emacs buffers.
- [Remote Repository Operations](https://awesome-repositories.com/f/development-tools-productivity/remote-repository-managers/remote-repository-operations.md) — Performs cloning, fetching, pulling, and pushing to remote repositories from within Emacs.
- [Repository Browsers](https://awesome-repositories.com/f/development-tools-productivity/repository-browsers.md) — Provides an interactive Emacs buffer for navigating commits, diffs, and file states.
- [Staging and Commit Interfaces](https://awesome-repositories.com/f/development-tools-productivity/staging-and-commit-interfaces.md) — Provides selective staging of files, hunks, or lines with commit message composition.
- [Partial Hunk Staging](https://awesome-repositories.com/f/development-tools-productivity/staging-and-commit-interfaces/partial-hunk-staging.md) — Selects specific hunks or lines for staging, leaving other changes unstaged. ([source](https://docs.magit.vc/Committing.html))
- [Staged Changes Previews](https://awesome-repositories.com/f/development-tools-productivity/staging-and-commit-interfaces/staged-changes-previews.md) — Displays differences between the index and the last commit to show changes ready to be committed. ([source](https://docs.magit.vc/Diffing.html))
- [Commit Log Displays](https://awesome-repositories.com/f/development-tools-productivity/version-control-history/commit-log-analysis/commit-log-displays.md) — Displays commit logs for branches and files directly within Emacs buffers. ([source](https://docs.magit.vc/Common-Commands.html))
- [Commit Cherry Picking Tools](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/git-utilities/commit-cherry-picking-tools.md) — Applies specific commits from one branch to another with full cherry-pick workflow support. ([source](https://docs.magit.vc/Cherries.html))
- [Visual History Manipulators](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/git-utilities/git-log-visualizers/split-view-git-interfaces/visual-history-manipulators.md) — Provides interfaces for visually restructuring a repository's commit timeline. ([source](https://docs.magit.vc/magit))
- [Rebase Operations](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/git-utilities/rebase-operations.md) — Moves branch commits onto a new base, rewriting history with interactive rebase support. ([source](https://docs.magit.vc/Branch-Commands.html))
- [Buffer-Based Hunk Staging](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/repository-utilities/working-directory-controllers/interactive-staging-interfaces/buffer-based-hunk-staging.md) — Enables granular staging and unstaging by selecting individual diff hunks or lines directly within Emacs buffers.
- [Per-File Diff Displays](https://awesome-repositories.com/f/development-tools-productivity/window-managers/buffer-managers/diff-layering/base-diff-display/per-file-diff-displays.md) — Displays changes made to a specific file across commits or between the working tree and index. ([source](https://docs.magit.vc/Diffing.html))
- [Revisions-Based Creations](https://awesome-repositories.com/f/development-tools-productivity/branch-management/branch-creation/revisions-based-creations.md) — Creates new branches from any existing commit, tag, or reference, not just the current HEAD. ([source](https://docs.magit.vc/Auxiliary-Branch-Commands.html))
- [Branch Deletions with Confirmation](https://awesome-repositories.com/f/development-tools-productivity/branch-management/local-branch-deletions/branch-deletions-with-confirmation.md) — Ships branch deletion with explicit user confirmation to prevent accidental data loss. ([source](https://docs.magit.vc/Branch-Commands.html))
- [Automatic Buffer Refreshes](https://awesome-repositories.com/f/development-tools-productivity/buffer-change-watchers/automatic-buffer-refreshes.md) — Automatically updates Magit buffers to reflect repository changes without manual intervention. ([source](https://docs.magit.vc/Automatic-Refreshing-of-Magit-Buffers.html))
- [Diff Statistics Summaries](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/buffer-diff-statistics/diff-statistics-summaries.md) — Displays the number of insertions and deletions for each file in the current diff. ([source](https://docs.magit.vc/Commands-Available-in-Diffs.html))
- [Command-Line Output Parsing](https://awesome-repositories.com/f/development-tools-productivity/command-line-tooling/command-line-output-parsing.md) — Parses raw Git command output into structured Emacs Lisp data structures for display and manipulation.
- [Diff-Based Direct Commits](https://awesome-repositories.com/f/development-tools-productivity/commit-identifiers/commit-range-filtering/commit-range-diff-viewers/diff-based-direct-commits.md) — Creates a new commit using selected changes from a diff, bypassing the staging area. ([source](https://docs.magit.vc/Commands-Available-in-Diffs.html))
- [Commit Amendments](https://awesome-repositories.com/f/development-tools-productivity/commit-management/commit-message-annotations/commit-amendments.md) — Modifies the most recent commit by adding new changes or editing its message. ([source](https://docs.magit.vc/Creating-a-new-commit.html))
- [Branch Renaming Operations](https://awesome-repositories.com/f/development-tools-productivity/development-workflow/environment-branching-patterns/branch-renaming-operations.md) — Change the name of an existing branch and update its upstream tracking. ([source](https://docs.magit.vc/Branch-Commands.html))
- [Tool-Specific Customizations](https://awesome-repositories.com/f/development-tools-productivity/editor-extensions/editor-behavior-customizations/explorer-behavior-customizations/general-editor-behavior-customizations/tool-specific-customizations.md) — Adjusts nearly every aspect of Magit's appearance and behavior through Emacs' standard customization interface. ([source](https://docs.magit.vc/Customizing.html))
- [Customization System Integrations](https://awesome-repositories.com/f/development-tools-productivity/emacs-extensions/customization-system-integrations.md) — Exposes all configuration options through Emacs' standard customization system for consistent behavior.
- [Line Blame Display](https://awesome-repositories.com/f/development-tools-productivity/git-blame-viewers/line-blame-display.md) — Shows the commit, author, and date for each line of a file, revealing when and why each change was made. ([source](https://docs.magit.vc/Blaming.html))
- [Diff Region Blame Annotations](https://awesome-repositories.com/f/development-tools-productivity/git-blame-viewers/line-blame-display/diff-region-blame-annotations.md) — Shows the commit that last modified a selected region in a diff using git blame. ([source](https://docs.magit.vc/Commands-Available-in-Diffs.html))
- [Editor-Based Configurations](https://awesome-repositories.com/f/development-tools-productivity/git-configuration/editor-based-configurations.md) — Adjusts Git configuration settings directly within the Emacs interface without using the command line. ([source](https://docs.magit.vc/magit/FAQ.html))
- [Region-Based Diff Filters](https://awesome-repositories.com/f/development-tools-productivity/git-diff-viewers/diff-hunk-folding/region-based-diff-filters.md) — Restricts the diff display to a selected hunk or region of changes for focused review. ([source](https://docs.magit.vc/Diffing.html))
- [Ediff-Based Revision Comparisons](https://awesome-repositories.com/f/development-tools-productivity/git-diff-viewers/revision-comparison/ediff-based-revision-comparisons.md) — Provides side-by-side file revision comparison using Emacs' Ediff subsystem. ([source](https://docs.magit.vc/Ediffing.html))
- [Remote Repository Cloning](https://awesome-repositories.com/f/development-tools-productivity/remote-repository-managers/remote-repository-cloning.md) — Downloads remote repositories to the local machine by specifying their URL. ([source](https://docs.magit.vc/Cloning-Repository.html))
- [File History Logs with Diffs](https://awesome-repositories.com/f/development-tools-productivity/revision-histories/deployment-revisions/file-revision-viewers/file-history-logs-with-diffs.md) — Shows the complete commit log for a single file with diffs for each revision. ([source](https://docs.magit.vc/))
- [Repository Initialization](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/repository-initialization.md) — Creates new Git repositories from scratch within the Emacs interface. ([source](https://docs.magit.vc/Creating-Repository.html))
- [Commit History Bisecting Tools](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/repository-utilities/history-analysis-visualization/commit-history-bisecting-tools.md) — Automates binary search across commit history to identify the commit introducing a bug. ([source](https://docs.magit.vc/Bisecting.html))
- [Selective Hunk Applications](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/repository-utilities/working-directory-controllers/working-tree-management/selective-hunk-applications.md) — Applies selected hunks of changes from the diff to the current working tree. ([source](https://docs.magit.vc/Diffing.html))
- [Selective Hunk Reversions](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/repository-utilities/working-directory-controllers/working-tree-management/selective-hunk-reversions.md) — Undoes selected hunks of changes in the working tree to restore files to their previous state. ([source](https://docs.magit.vc/Diffing.html))
- [Hunk Reversions](https://awesome-repositories.com/f/development-tools-productivity/window-managers/buffer-managers/diff-layering/hunk-navigation-and-manipulation/hunk-based-change-management/hunk-reversions.md) — Reverses selected hunks in the working tree to undo their changes. ([source](https://docs.magit.vc/Commands-Available-in-Diffs.html))
- [Selective Hunk Applications](https://awesome-repositories.com/f/development-tools-productivity/window-managers/buffer-managers/diff-layering/hunk-navigation-and-manipulation/hunk-based-change-management/selective-hunk-applications.md) — Applies selected changes from a diff to the working tree, staging only the chosen hunks. ([source](https://docs.magit.vc/Commands-Available-in-Diffs.html))

### DevOps & Infrastructure

- [Buffer-Integrated Git Operations](https://awesome-repositories.com/f/devops-infrastructure/git-command-execution/buffer-integrated-git-operations.md) — Executes Git commands directly from the editor buffer without requiring a separate terminal or staging tool. ([source](https://docs.magit.vc/Additional-Completion-Options.html))
- [Git Pull Operations](https://awesome-repositories.com/f/devops-infrastructure/container-image-registries/image-push-pull-workflows/git-pull-operations.md) — Provides full Git pull and push operations for synchronizing with remote repositories. ([source](https://docs.magit.vc/magit))
- [Git Command Execution](https://awesome-repositories.com/f/devops-infrastructure/git-command-execution.md) — Executes arbitrary Git commands within Emacs and displays their output, integrating version control into the editor. ([source](https://docs.magit.vc/Calling-Git-for-Effect.html))
- [Transient Command Menus](https://awesome-repositories.com/f/devops-infrastructure/git-command-execution/transient-command-menus.md) — Provides a modal, context-sensitive menu system for executing Git commands with inline argument editing and completion.
- [Selective Staging Interfaces](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control/staging-areas/selective-staging-interfaces.md) — Enables granular staging of individual diff hunks or lines directly within the editor buffer. ([source](https://docs.magit.vc/magit))
- [Interactive Rebase Editors](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control-utilities/commit-history-management/interactive-rebase-editors.md) — Provides an interactive rebase interface for editing any reachable commit and rewriting history. ([source](https://docs.magit.vc/Editing-any-reachable-commit-and-rebasing-immediately.html))

### Repository Format

- [Branch Checkouts](https://awesome-repositories.com/f/repository-format/branch-checkouts.md) — Switches the working tree to an existing branch, updating files and index. ([source](https://docs.magit.vc/Branch-Commands.html))

### Software Engineering & Architecture

- [Editor-Based Compositions](https://awesome-repositories.com/f/software-engineering-architecture/commit-message-standards/commit-message-templates/editor-based-compositions.md) — Opens an editor buffer with a pre-filled template and commit message guidelines to compose a structured commit. ([source](https://docs.magit.vc/Commit-Message-Conventions.html))
- [Arbitrary Revision Comparisons](https://awesome-repositories.com/f/software-engineering-architecture/diffing-engines/arbitrary-revision-comparisons.md) — Compares any two commits, branches, or tags to present file-level changes between them. ([source](https://docs.magit.vc/Diffing.html))
- [Buffer File Staging Operations](https://awesome-repositories.com/f/software-engineering-architecture/project-management-governance/repository-maintenance/repository-metadata/commit-histories/snapshot-committing-utilities/staging-buffers/buffer-file-staging-operations.md) — Stages or unstages the entire content of the file visited in the current editor buffer. ([source](https://docs.magit.vc/Commands-for-Buffers-Visiting-Files.html))
- [Buffer-Based Hunk Staging](https://awesome-repositories.com/f/software-engineering-architecture/project-management-governance/repository-maintenance/repository-metadata/commit-histories/snapshot-committing-utilities/staging-buffers/index-based-staging/buffer-based-hunk-staging.md) — Stages or reverts individual diff hunks directly from the editor buffer without a separate staging tool. ([source](https://docs.magit.vc/Commands-Available-in-Diffs.html))
- [Patch Application](https://awesome-repositories.com/f/software-engineering-architecture/code-patching-engines/patch-generators/patch-application.md) — Applies patch files to the current repository, integrating changes from external sources. ([source](https://docs.magit.vc/Applying.html))
- [Commit Message Editors](https://awesome-repositories.com/f/software-engineering-architecture/commit-message-standards/commit-message-templates/commit-message-editors.md) — Opens an Emacs buffer with a pre-filled template for composing structured commit messages.

### User Interface & Experience

- [Section-Based Buffer Organizers](https://awesome-repositories.com/f/user-interface-experience/collapse-sections/section-based-buffer-organizers.md) — Organizes repository information into nested, collapsible sections within buffers for hierarchical navigation.
- [Ediff-Based Comparisons](https://awesome-repositories.com/f/user-interface-experience/diff-comparisons/ediff-based-comparisons.md) — Provides side-by-side and unified diff comparisons using Emacs' Ediff subsystem for revision comparison and conflict resolution.
- [Working Tree Diffs](https://awesome-repositories.com/f/user-interface-experience/diff-visualizations/working-tree-diffs.md) — Shows differences between the version control index and the current working directory. ([source](https://docs.magit.vc/Common-Commands.html))
- [Collapse Sections](https://awesome-repositories.com/f/user-interface-experience/collapse-sections.md) — Inserts new collapsible regions into the current buffer to organize related content. ([source](https://docs.magit.vc/Creating-Sections.html))
- [User Confirmation Dialogs](https://awesome-repositories.com/f/user-interface-experience/user-confirmation-dialogs.md) — Requires explicit user confirmation before executing destructive version control actions. ([source](https://docs.magit.vc/Action-Confirmation.html))

### Web Development

- [Version Control Conflict Resolutions](https://awesome-repositories.com/f/web-development/collaborative-editing-conflict-resolution/version-control-conflict-resolutions.md) — Provides methods for merging concurrent changes in version-controlled codebases without data loss. ([source](https://docs.magit.vc/magit))

### Data & Databases

- [Command Execution Transactions](https://awesome-repositories.com/f/data-databases/atomic-transaction-models/command-execution-transactions.md) — Manages Git command execution as atomic transactions with automatic buffer refresh and error handling.
