5 ms·
> a big part of magit’s special sauce I’d say it’s what makes magit.. magit. The whole command composition interface (almost like chords) is what drives people
by brobsc 3y ago
> a big part of magit’s special sauce
I’d say it’s what makes magit.. magit. The whole command composition interface (almost like chords) is what drives people to it. The looks and some fringe M-x commands are… just there
- snotrockets 3y agowhich-key (https://github.com/justbur/emacs-which-key https://github.com/justbur/emacs-which-key) adds a similar functionality to most (all?) commands.
- koito17 3y agowhich-key is more like autocomplete for keybinds. I consider it orthogonal to transient. It's meant for modals that show you what keybinds actually exist given some "prefix" you have just inputted. If I had to make an analogy, I'd say which-key is closer to company+counsel+ivy than transient. I have used which-key with the three packages I just mentioned for as long as I have been using Emacs, and this is how I've always seen its role.
- agumonkey 3y agoThere's more to magit, especially its way of grabbing information from context in the log/graph view for instance, or the implicit chunkning, it's pure papercut removal.
- globular-toast 3y agoIt also enables super easy workflows. To give an example, consider working on a fork of a project from GitHub. You clone the project from its source and make some changes and commit them. Where do you push the changes? You make a fork on GitHub. Go to magit, press a couple of keys to add a remote, name it the same as your GitHub username, magit automatically sets the URL correctly. Now you realise you've put those commits on your new master branch but etiquette says you should put them on a separate branch. A couple of keys creates a "spinoff branch". Magit automatically creates a new branch at that point, sets the upstream of that branch to the old upstream (e.g. origin/master) and resets the old branch (master) to its upstream. Now because your remote is set as "push default" you can easily push to it. Magit will now show you if upstream (the other remote) has diverged which means you press a couple of keys to rebase on to upstream then force push to your fork. And this doesn't even mention things like doing an interactive rebase. Magit helps immensely there. The diff "dwim" is useful too. The list goes on.
- agumonkey 3y agohaha yeah magit rebase makes you learn without trying. Everyday I have colleagues screaming in terror having to rebase, while emacs users are whistling. i'm also curious about having magit extensions, as many people say, git lacks some stuff as UI, and they may fit very well around magit
- globular-toast 3y agoThe "spinoff" feature I mentioned is a magit extension. As are other things like stashing (git's own stashing only recently got updated to be able to do little bit more of what magit can do). Magit actually claims to be a git porcelain, not just a git GUI. I think the long term goal is still to do what it does via libgit and not even use the git CLI at all.
- agumonkey 3y agoI should monitor the github issues / discussions
- User23 3y agoThe ease with which magit lets me do an interactive rebase that splits a commit into multiple commits changed my workflow.
- turboponyy 3y ago> Where do you push the changes? You make a fork on GitHub. Go to magit, press a couple of keys to add a remote, name it the same as your GitHub username, magit automatically sets the URL correctly. Or, just use the magit-forge package by the same author and run `forge-fork`.
- ParetoOptimal 3y agoThe contextual rebase, diff, etc is the biggest advantage for me.