Rebasing in Magit

Magit, an Emacs-based interface to Git, is widely praised by its users for making complex version-control tasks like interactive rebasing, fine-grained staging, and history rewriting faster and more discoverable than the Git command line or typical IDE integrations. Many commenters, however, see Emacs itself—its learning curve, keyboard conventions, and performance—as a major adoption barrier, leading them to prefer tools like Lazygit, GitUp, jj/jjui, or stock Git CLI workflows. The exchange highlights a broader split between developers who invest in powerful, highly customized tooling and those who favor simpler, more conventional interfaces even if that means using Git’s advanced features less.

Overall sentiment on Magit

  • Many commenters describe Magit as exceptionally powerful, especially for complex history editing (rebasing, fixups, splitting/squashing commits, line-level staging).
  • Several say Magit is the main reason they stick with Emacs or one of the few tools that genuinely changed their Git workflow.
  • A minority find its rebasing UI confusing and mainly value it for reviewing/staging diffs.
  • Some note that Magit makes Git concepts more “discoverable” via contextual popups and single-key commands.

Emacs as Barrier to Adoption

  • A recurring theme: Magit’s dependency on Emacs severely limits adoption; many don’t want to learn or maintain Emacs just for Git.
  • Some Emacs users report repeatedly failing to convince colleagues to try Magit, even when offering VS Code clones (e.g., edamagit).
  • There’s also caution against “pushing” Emacs onto uninterested coworkers because it creates support burdens.

Comparisons to Other Tools & Workflows

  • Alternatives praised: GitUp (Mac-only), LazyGit, jj/jjui, majutsu (Magit-like for jj), neogit (Neovim), fugitive (Vim), gitu, IDE integrations, Fork, tig, git cola/gitk/git-gui.
  • Some argue GitUp or LazyGit offer faster or more intuitive commit manipulation (move/squash via simple keys) and that Magit doesn’t surpass that for common tasks.
  • Others insist nothing matches Magit’s workflow and speed once mastered, especially for granular staging and complex rebases.
  • Several prefer plain Git CLI with a few aliases, claiming wrappers add little or have betrayed trust in the past.

Performance Issues

  • Complaints that Magit status can be several seconds slower than git status, especially in large repos.
  • Others respond that Magit runs many extra Git commands and recommend disabling specific status sections or profiling to speed it up.

Emacs Performance & Architecture

  • Long subthread on Emacs being slower to start and more sluggish than Neovim/Sublime, with benchmarks.
  • Mitigations: running Emacs as a daemon, tuning GC, using experimental incremental GC branch, trimming configs.
  • Debate over whether shared global state and single-threaded design are fundamental limitations or acceptable trade-offs.

UI Philosophy & Learning Curve

  • Magit’s key-discovery model is compared to old Lotus 1-2-3 style prompts: stepwise, hint-driven, then internalized as “incantations.”
  • Some see this as elegant; others say the key sequences look intimidating and mask underlying complexity rather than removing it.