There are some aliases and Git addons that I use to make my life easier.
I have a shell alias that maps git
to g
, but that’s about as far as I go. I
don’t have gco
or things like that because I feel like that would get
confusing for me.
I have an alias called git recent
that pretty-prints the branches I have
poked at most recently:
[alias]
recent = ! git branch --sort=-committerdate --format=\"%(committerdate:relative)%09%(refname:short)\" | head -10
which looks like:
$ g recent
45 minutes ago at-listiter
59 minutes ago mb-mul-add
61 minutes ago mb-lshift
2 hours ago cinder/3.8
$
I have an alias called git smartlog
(and git sl
) that emulates hg
smartlog
, which I have
gotten used to using at work.
[alias]
smartlog = log --graph --pretty=format:'commit: %C(bold red)%h%Creset %C(red)[%H]%Creset %C(bold magenta)%d %Creset%ndate: %C(bold yellow)%cd %Creset%C(yellow)%cr%Creset%nauthor: %C(bold blue)%an%Creset %C(blue)[%ae]%Creset%n%C(cyan)%s%n%Creset'
I like to write descriptive commit summaries, especially explaining motivation
or interesting debugging stories. They are helpful to come back to later when I
inevitably git blame
myself.
I almost always stage changes with add -p
. This way I can split out
changes more finely than per-file. This helps me structure commits into neat
little series instead of one giant blob.
I almost always commit with commit --verbose
. This way I can page through my
changes when describing them.
In my global .gitconfig
I have:
[commit]
template = /home/username/.gitmessage
This helps keep my commit messages consistent.
I have git absorb
, which is an
easier way to do git commit --fixup
and git rebase -i --autosquash
.
I have tig
which I use to page through
commits.
I use git filter-repo
to rebase
files and directories out of existence.
I use git branchless
, which does
in fact support branches. I use it primarily for git next
and git prev
. I
have occasionally also used git restack
, though these days I tend to use
rebase -i
, edit the commit (edit
), and continue the rebase.
In the past I used gitolite extensively to host my own Git server with multiple users and whatnot.
I have vim-fugitive
installed and
use it regularly.
I think Jujutsu/jj
is very neat. Also
Game of Trees. Also
dura. Also
gitless. Also
Sapling.
Learn how to see the history of a method.