One of the few true joys I have in software is being happy with a tool, and it becoming an even better tool. Intellij, magit, are at the top of the list, but other things get better (albeit more slowly sometimes).
I’m aware of how other people use git (command line, gitk, kraken, the new sublime thing), but am so happy I don’t feel like I need to spend a bunch of time comparing.
Yeah, I am bearish on software as a rule, which makes encountering actually legitimately enjoyable software so much better. magit is one such software.
This is the one tool that is making me seriously consider flipping my workflow upside down and switching from vim + git cli to emacs.
That said, if anyone knows of something similar to magit that doesn’t require emacs, I’m interested in hearing about it! I’ve played with tig a bit, but always go back to using git from the cli..
I recently started using spacemacs in vim mode (which is its default) and it’s lovely. It’s been a much better experience getting a decent environment going than I’ve ever had with vim. Haven’t dug into Magit yet but I’m eager to. The docs for spacemacs are a bit scattered but this was the most useful for me to get going:
How long did you use vim workflows before switching? I’ve been a fulltime vim user for about 10 years, and I’m afraid that my productivity will take a serious spill as I try to unlearn muscle memory and build new ones. If you used vim for a while, I’m curious how that experience was for you.
I switched mostly to emacs + evil (also used for Spacemacs) after a decade and a half or so on various vi implementations. Evil is very complete, evil often feels more like a complete vi implementation in Emacs Lisp rather than ‘vi emulation’. So far I didn’t have to unlearn any muscle memory.
I used Spacemacs for the initial switch, but I found it to be very buggy and slow. So, at some point I just switched to Emacs + hand-picked packages. I use use-package to load/install packages that I install with Nix and manage with home-manager. I use general to set up spacemaps-like key bindings (e.g. SPC-p-f to find a file in a project SPC-b-b to search buffers, etc.).
However, the Emacs ecosystem can be a bit overwhelming, so Spacemacs is a good entry point.
I never spent longer than six months or so using vim full time, so I’m in a very different situation. You’ll be able to put much of your muscle memory to good use in spacemacs, using the same keystrokes to navigate and edit within a buffer. However you’ll need to re-learn many other common tasks.
You will absolutely take a big productivity hit at first, but if you stick with it then you’ll start feeling comfortable pretty quickly. Learning is its own reward! :)
I have used vimagit and fugitive (both Vim/Neovim plugins) together for a while now. Vimagit is far from equal to magit in terms of power, but provides my Vim setup with the main features I missed from magit (visual range staging, easy amends, etc.). Fugitive is also useful on its own, but I currently mostly use it to asychronously push/pull from within Neovim (as vimagit does not yet provide these features itself).
One thing I’m wondering about trying is a TUI-only Emacs configuration with a virtually completely empty .emacs file, flset up for just magit and nothing else. I’m wondering if the load time with a maximally stripped-down configuration would be short enough to make it feasible to use magit in a non-Emacs-oriented workflow. So, edit in something else, launch Emacs+magic in terminal, stage changes, close Emacs.
The Emacs daemon mode might be an option too but it adds a bit of complexity to the setup. :/
I use tig a lot for browsing commits, but for making commits, vimagit is a pretty cool magit-inspired vim-based git add -p type thing.
git add -p
(Though I keep using add -p anyway lol)
Fugitive is amazing. I use it extensively at work.
I’ve been using its most basic functionality (Gblame, and gutter highlighting) for at least 1 year now. Perhaps it’s time to invest more time in learning the ‘advanced’ features.
Yeah! It’s got good diffing, committing, etc.
If you like fugitive, I’d also recommend checking out gina.
What does it do differently/better?
I’ve been using magit extensively, however I cannot stomach its blame mode. I find it next to useless due to the way it annonates inline. I really need something with side annotation. Can anybody suggest an alternative besides vc-annotate? I’m using “tig blame” heavily for this task.