Using Emacs and Git with Magit 2.1
lwn.net
lwn.net
Navigation is intuitive, diffs are great, discarding and commiting hunks is superb, and it's snappy. It's really an outstanding interface for git!
This is my one fear. I am however willing to put up with this decay given the increase in productivity. It's up there with org-mode as an emacs feature.
You can always see what command Magit is running behind the scenes by hitting `$`, in case you're curious -- I've learned a few things this way.
Next up to play with: whazzup.
Once I got used to the few keys, it is much better than anything else I saw before, and much faster than doing it manually.
Moving picks up or down with one key, killing it, fixup, squash, inspection, ... all with one key.
(require 'package) ;; You might already have this line
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/"))
(when (< emacs-major-version 24)
;; For important compatibility libraries like cl-lib
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize) ;; You might already have this line
I bounced emacs, it seemed to come back up okay. But (emacs 24.5.1 OSX) when I type "M-x package-install" it claims magit [No Match]I use emacs- but I don't tend to customize it much.
(defvar packages '(pkg1 pkg2 magit))
(require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize) (package-refresh-contents)
(dolist (p packages) (when (not (package-installed-p p)) (package-install p)))
do this periodically to get your list updated w/ new packages and the latest releases.
I highly recommend that you take a couple of days or so and try playing around with packages that apply to your use. That's where it really shines.
If you give developers a "lazy" option, a lot will default to it, which isn't ideal. -m is an alternative for a quick commit and end up being front and center when using the CLI.
I have flyspell-mode enabled for git-commit-mode. Avoids embarrassing typos in my git commit log.
It's little stuff like this adding up, making Emacs too great to ever be without.
I played around with it, and didn't see any advantage over using git commands.
Then I tried pushing a change. I was expecting some confirmation on what refspec to use... but no! Magit pushed my change directly to refs/heads instead of refs/for, completely bypassing gerrit code review.
I got burned. That was it; I'm never using Magit again.
As with many emacs commands you use C-u if you want to specify the refspec to push to.