Like many programmers I use git constantly. And also like many programmers I get tired of typing the same commands over and over and over. So I’ve added the following aliases to my .zshrc to make common commands easier and quicker to type. You could do something similar via .gitconfig or .bashrc.
Some of my most used aliases are gpb
for pushing a branch, gca
for committing all changes, gs
for getting the status, and gup
for rebasing from master.
Let me know if you have any suggestions!
# Git
alias g='git'
# Shorten common commands
alias gst='g status'
alias gpl='g pull'
alias gpu='g push'
alias gf='g fetch'
alias gco='g checkout'
alias grb='g rebase'
alias grbc='g rebase --continue'
alias grba='g rebase --abort'
alias ga='g add'
alias gm='g merge'
# More succinct status
alias gs='g status -sb'
# Show all branches in the order of last change
alias gb='g for-each-ref --sort=committerdate refs/heads/ --format="%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))"'
# Nicer diff
alias gd='g diff --word-diff'
# Delete a branch
alias gdb='g branch -D'
# Fancy git log
alias gl='g log --graph --stat --abbrev-commit --date=relative'
# Push branch and set the upstream
alias gpb='g push --set-upstream origin "$(g rev-parse --abbrev-ref HEAD)"'
# Safer force push
alias gpbf='g push --force-with-lease'
# Pull the latest from master and rebase
alias gup='g pull --rebase origin master'
# Pull the latest from master and merge
alias gum='g pull origin master'
# Ammend a commit
alias gam='g commit --amend'
# Save changes temporarily
alias gwip='g add -A && g commit --no-verify -m "WIP"'
# Undo the last commit
alias gun='g reset HEAD~1 --mixed'
# Super undo using the reflog...careful. Undo your undo.
alias gungun='g reset "HEAD@{1}"'
# Delete all merged branches
alias gcl='g branch | grep -v "master" | xargs g branch -d'
# Commit
alias gc='g commit -v -m'
# Add all and commit
alias gca='g add -u && g add . && g commit -v -m'
# Create new branch
alias gcob='g checkout -b'
# Add all
alias gaa='g add -u && g add . && g status'
# Interactive adding
alias gap='g add -p && g status'
# Interactive rebase for squashing commits
alias gir="g rebase -i origin/master"