Alright, so @philnash roped me into this one.
This post’s birth comes from a gist 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 .— Runninggit addwill add all files that have changed as staged.b = branch— Lists all branches for your repository on your local machine.bi = bisect— Runninggit biwill run git’s bisect to help you figure out which commit has a bug.ci = commit -m— This will commit a file with the message you specify, e.g.git ci "awesome commit!".co = checkout— This will checkout the branch you specify, e.g.git co my-awesome-branchcolast = checkout -— Runninggit colastwill checkout the previous branch you were working in.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.laf = fsck --lost-found— Runninggit lafwill 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.last = log -1 HEAD— Runninggit lastwill show you what your last commit was.lc = diff HEAD^ HEAD- Compares the head of your branch to the previous commit.pf = push --force-with-lease— Runninggit pfforces a push, but it is a little less destructive than forcing a push. See here for more info on —force-with-lease vs. —force.psu = push --set-upstream— Run this when you want to push a branch for the first time to the remote (typicallyorigin), e.g.git psu origin my-awesome-branch.pr = pull --rebase— This will rebase your current branch with the branch specified, e.g.git pr develop.ra = rebase --abort— Runninggit rawill abort a rebase. Run this when you’re like, my rebase is currently messed up. Get me outta here!rc = rebase --continue— Runninggit rcwill continue a rebase. You typically run this when you’ve handled any conflicts in a rebase.remotes = remote -v— Runninggit remotesshows all the remotes currently configured for a repository.renb = branch -m— When you want to rename a branch, run e.g.git renb my-awesom-branch my-awesome-branch.rhh = reset --hard HEAD— The nuclear option. Rungit rhhto wipe out all your changes and start from theHEAD.rh = reset --hard— When you specify what to reset to, a hard reset is performed, e.g.git rh HEAD~2.sfc = diff-tree --no-commit-id --name-only -r— Shows files (relative file paths) for a specific commit, e.g.
❯ git sfc HEAD
src/posts/any-contribution-to-open-source-is-valuable-57d3.md
src/posts/april-16th-2021-what-did-you-learn-this-week-3e72.md
src/posts/are-there-plans-for-reviewers-of-articles-we-post--42nf.md
s = status -s— Runninggit swill 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/index.md
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/index.md
stashes = stash list— Runninggit stashesshows 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— Runninggit unstashpops a stash off the list of saved stashes.vc = clean -dfx— Runninggit vccleans 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.mend = commit --amend— Runninggit mendlets you amend a commit.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.alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /— Runninggit aliaseswill 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
