I use git-messenger,
git-timemachine,
and Magit in a custom Hydra binding. As described in my Basic Emacs Coding Config, I
use git
for my source code management, and
Magit is a really top-notch frontend for it. It exposes nearly all Git
functionality on mnemonic keybindings.
use-package git-timemachine)
(use-package git-messenger)
(use-package magit
(
:after (git-timemachine git-messenger)
:config "C-c g" :color teal :hint nil)
(defhydra hydra-magit (global-map "
PROJECTILE: %(projectile-project-root)
Immuting Mutating
-----------------------------------------
_w_: blame line _b_: checkout
_a_: annotate file _B_: branch mgr
_d_: diff _c_: commit
_s_: status _e_: rebase
_l_: log
_t_: time machine
"
"w" git-messenger:popup-message)
("a" vc-annotate)
("b" magit-checkout)
("B" magit-branch-manager)
("c" vc-next-action)
("d" magit-diff-working-tree)
("e" magit-interactive-rebase)
("s" magit-status)
("l" magit-log)
("t" git-timemachine))
(
:bind"C-c g" . #'hydra-magit/body)
(
(:map evil-leader--default-map"g" . hydra-magit/body)))
(
provide 'cce/magit) (
{...}:
{
programs.git = {
enable = true;
userName = "Ryan Rix";
userEmail = "ryan@whatthefuck.computer";
extraConfig = {
core = { excludesfile = "~/.gitignore"; };
init = { defaultBranch = "main"; };
};
};
}