After years of using zsh with a cargo-culted configuration, I gave up on it and switched to the Friendly Interactive Shell, aka fish. It has a simplified scripting language, has sane defaults, and straightforward auto-complete features. There's not much to see in the config file, because fish doesn't believe in configurability. I'm using oh my fish to manage most of the config.
Before I started using Magit, I got to know the git command line pretty well, and got really into creating custom aliases. Here are a few:
amend
:commit --amend
after an accidentalcommit -amend
and instead of--amend
that took an hour to undo, I started this list.addp
:add --patch
axe <term>
:log -S<term>
searches your git history for termcleanup
: removes all local branches merged into HEADcleanup-remotes
: removes all remote branches merged into HEAD.delete <remotename> <branchname>
: Deletes branch from remotefold
:merge --no-ff
takes some branches and merges them in, keeping their full branch and commit history.goto <refspec>
:reset --hard <refspec>
hard resets to the given refspeclabel
:tag -a
creates an annotated tag, for versioning or suchstaged
:diff --cached
displays the contents of the indextag-release
: Creates an unannotated tag namedrelease/YYYY/MM/DD/HHMM
. Preferably, your build tools do this instead.track <remote refspec>
:checkout -t <remote refspec>
checks out a remote branch as a local branch and sets tracking.undo
:reset --soft HEAD^
Revert a commit, but leave its contents as staged.unstage <path>
:reset HEAD -- <path>
removespath
from the indexupdate-remotes
:remote update --prune
for each remote, fetches and prunes.
-
on mac:
bash -c "$(curl -fsSL https://github.com/mattly/dotfiles/blob/master/install/mac_bootstrap)"
This gets you homebrew, a pub key to put on GitHub, git, this repository cloned, the config files symlinked, .emacs.d, and fish as the default shell.
From there,
brew bundle
the desired files ininstall/