My Git Aliases

— 6 minute read

Boost on DEV

Alright, so @philnash roped me into this one. This keeps in line with my other posts that are “Not just a Gist”. If you want to read about those posts, check out these:

This post’s birth comes from [a gist]( file-gitconfig) which is essentially a copy paste of my git aliases.

I’m going to provide my list of git aliases and explain what each alias does, plain and simple. Let’s get started! 🏁 For those new to git aliases, please see the defacto docs on aliases. In a nutshell though, to create your own aliases, use the following git command.

git config --global alias.somealias some-git-command

Before we get started, why git aliases? Well for one thing, I don’t know about you, but some git commands are hard to remember and also, we’re programmers, which means we’re lazy by default to be efficient. 🐢 —> 🐇

a = add . — Running git add will add all files that have changed as staged. permalink

b = branch — Lists all branches for your repository on your local machine. permalink

bi = bisect — Running git bi will run git’s bisect to help you figure out which commit has a bug. permalink

ci = commit -m — This will commit a file with the message you specify, e.g. git ci "awesome commit!" . permalink

co = checkout — This will checkout the branch you specify, e.g. git co my-awesome-branch

colast = checkout - — Running git colast will checkout the previous branch you were working in. permalink

db = branch -D — This will delete the branch you specify, e.g. git db my-not-so-awesome-branch . Note that this will only work if the branch you’re deleting is not the one you’re currently working in. permalink

laf = fsck --lost-found — Running git laf will bring you to git’s lost and found. I’ll admit that I rarely use this, so perhaps it doesn’t warrant an alias and just some professional Googling. permalink

last = log -1 HEAD — Running git last will show you what your last commit was. permalink

lc = diff HEAD^ HEAD

  • Compares the head of your branch to the previous commit.

pf = push --force-with-lease — Running git pf forces a push, but it is a little less destructive than forcing a push. See here for more info on —force-with-lease vs. —force. permalink

psu = push --set-upstream — Run this when you want to push a branch for the first time to the remote (typically origin ), e.g. git psu origin my-awesome-branch . permalink

pr = pull --rebase — This will rebase your current branch with the branch specified, e.g. git pr develop . permalink

ra = rebase --abort — Running git ra will abort a rebase. Run this when you’re like, my rebase is currently messed up. Get me outta here! permalink

rc = rebase --continue — Running git rc will continue a rebase. You typically run this when you’ve handled any conflicts in a rebase. permalink

remotes = remote -v — Running git remotes shows all the remotes currently configured for a repository. permalink

renb = branch -m — When you want to rename a branch, run e.g. git renb my-awesom-branch my-awesome-branch . permalink

rhh = reset --hard HEAD — The nuclear option. Run git rhh to wipe out all your changes and start from the HEAD . permalink

rh = reset --hard — When you specify what to reset to, a hard reset is performed, e.g. git rh HEAD~2 . permalink

sfc = diff-tree --no-commit-id --name-only -r — Shows files (relative file paths) for a specific commit, e.g.

git sfc HEAD                                

s = status -s — Running git s will give you a more terse status. Instead of this

On branch post/my-git-aliases
Your branch is up to date with 'origin/post/my-git-aliases'.

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: src/pages/articles/2018-08-24-my-git-aliases/

no changes added to commit (use "git add" and/or "git commit -a")

You get this

M src/pages/articles/2018-08-24-my-git-aliases/

stashes = stash list — Running git stashes shows you all the stashes you have from stashing. e.g.

stash@{0}: WIP on upgrade: bff6257 Destructuring OCD...
stash@{1}: WIP on upgrade: 3d73199 Fixed LiceCap link.
stash@{2}: WIP on upgrade: c2f78g6 Update default title.

unstash = stash pop — Running git unstash pops a stash off the list of saved stashes. permalink

vc = clean -dfx — Running git vc cleans your git repository, so anything not in git is wiped, e.g. node_modules , settings files which aren’t supposed to be in a repo etc. So BEWARE before you run this. permalink

mend = commit --amend — Running git mend lets you amend a commit. permalink

trigger = commit --allow-empty -m "Trigger Build" — Creates an empty commit. This is handy when you need to restart a build remotely in your CI/CD pipeline without committing changes. permalink

alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ / — Running git aliases will show all the aliases you have configured globally in git.

Although it's not Git aliases, I also highly recommend using the GitHub CLI.

Photo courtesy of Flickr user cindy

Comment on DEV