Last active
February 10, 2026 11:09
-
-
Save hilios/83f45ac399731a0e5596b9c261ee9689 to your computer and use it in GitHub Desktop.
Oh-my-zsh git aliases
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # omz-git.plugin.standalone.zsh | |
| # Oh My Zsh - git plugin (standalone): minimal helpers + ALL aliases from README | |
| # Reference: https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/refs/heads/master/plugins/git/README.md | |
| # ---------------------------- | |
| # Minimal helpers (only what aliases reference) | |
| # ---------------------------- | |
| git_current_branch() { | |
| git symbolic-ref --quiet --short HEAD 2>/dev/null \ | |
| || git rev-parse --short HEAD 2>/dev/null | |
| } | |
| # OMZ keeps `current_branch` for backwards compatibility | |
| current_branch() { git_current_branch } | |
| # README says: main if exists, master otherwise. [oai_citation:1‡GitHub](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/refs/heads/master/plugins/git/README.md) | |
| git_main_branch() { | |
| git show-ref --verify --quiet refs/heads/main && { echo main; return 0; } | |
| echo master | |
| return 0 | |
| } | |
| # README says: dev/devel/development if they exist, develop otherwise. [oai_citation:2‡GitHub](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/refs/heads/master/plugins/git/README.md) | |
| git_develop_branch() { | |
| local b | |
| for b in dev devel development; do | |
| git show-ref --verify --quiet "refs/heads/$b" && { echo "$b"; return 0; } | |
| done | |
| echo develop | |
| return 0 | |
| } | |
| # ---------------------------- | |
| # Small, local git version gating (for a few aliases) | |
| # ---------------------------- | |
| autoload -Uz is-at-least 2>/dev/null | |
| _git_version="$({ | |
| local v | |
| v=$(git version 2>/dev/null) || exit 0 | |
| echo "${${(As: :)v}[3]}" | |
| })" | |
| # ---------------------------- | |
| # Aliases (from OMZ README) | |
| # ---------------------------- | |
| alias grt='cd "$(git rev-parse --show-toplevel || echo .)"' | |
| alias ggpnp='ggl && ggp' | |
| alias ggpur='ggu' | |
| alias g='git' | |
| alias ga='git add' | |
| alias gaa='git add --all' | |
| alias gapa='git add --patch' | |
| alias gau='git add --update' | |
| alias gav='git add --verbose' | |
| alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]"' | |
| alias gam='git am' | |
| alias gama='git am --abort' | |
| alias gamc='git am --continue' | |
| alias gamscp='git am --show-current-patch' | |
| alias gams='git am --skip' | |
| alias gap='git apply' | |
| alias gapt='git apply --3way' | |
| alias gbs='git bisect' | |
| alias gbsb='git bisect bad' | |
| alias gbsg='git bisect good' | |
| alias gbsn='git bisect new' | |
| alias gbso='git bisect old' | |
| alias gbsr='git bisect reset' | |
| alias gbss='git bisect start' | |
| alias gbl='git blame -w' | |
| alias gb='git branch' | |
| alias gba='git branch --all' | |
| alias gbd='git branch --delete' | |
| alias gbD='git branch --delete --force' | |
| alias gbgd='LANG=C git branch --no-color -vv | grep ": gone]" | cut -c 3- | awk '"'"'{print $1}'"'"' | xargs git branch -d' | |
| alias gbgD='LANG=C git branch --no-color -vv | grep ": gone]" | cut -c 3- | awk '"'"'{print $1}'"'"' | xargs git branch -D' | |
| alias gbm='git branch --move' | |
| alias gbnm='git branch --no-merged' | |
| alias gbr='git branch --remote' | |
| alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' | |
| alias gbg='LANG=C git branch -vv | grep ": gone]"' | |
| alias gco='git checkout' | |
| alias gcor='git checkout --recurse-submodules' | |
| alias gcb='git checkout -b' | |
| alias gcB='git checkout -B' | |
| alias gcd='git checkout $(git_develop_branch)' | |
| alias gcm='git checkout $(git_main_branch)' | |
| alias gcp='git cherry-pick' | |
| alias gcpa='git cherry-pick --abort' | |
| alias gcpc='git cherry-pick --continue' | |
| alias gclean='git clean --interactive -d' | |
| alias gcl='git clone --recurse-submodules' | |
| alias gclf='git clone --recursive --shallow-submodules --filter=blob:none --also-filter-submodules' | |
| alias gccd='git clone --recurse-submodules "$@" && cd "$(basename $_ .git)"' | |
| alias gcam='git commit --all --message' | |
| alias gcas='git commit --all --signoff' | |
| alias gcasm='git commit --all --signoff --message' | |
| alias gcmsg='git commit --message' | |
| alias gcsm='git commit --signoff --message' | |
| alias gc='git commit --verbose' | |
| alias gca='git commit --verbose --all' | |
| alias gca!='git commit --verbose --all --amend' | |
| alias gcan!='git commit --verbose --all --no-edit --amend' | |
| alias gcans!='git commit --verbose --all --signoff --no-edit --amend' | |
| alias gcann!='git commit --verbose --all --date=now --no-edit --amend' | |
| alias gc!='git commit --verbose --amend' | |
| alias gcn='git commit --verbose --no-edit' | |
| alias gcn!='git commit --verbose --no-edit --amend' | |
| alias gcs='git commit -S' | |
| alias gcss='git commit -S -s' | |
| alias gcssm='git commit -S -s -m' | |
| alias gcf='git config --list' | |
| alias gcfu='git commit --fixup' | |
| alias gdct='git describe --tags $(git rev-list --tags --max-count=1)' | |
| alias gd='git diff' | |
| alias gdca='git diff --cached' | |
| alias gdcw='git diff --cached --word-diff' | |
| alias gds='git diff --staged' | |
| alias gdw='git diff --word-diff' | |
| alias gdv='git diff -w "$@" | view -' | |
| alias gdup='git diff @{upstream}' | |
| alias gdnolock='git diff $@ ":(exclude)package-lock.json" ":(exclude)*.lock"' | |
| alias gdt='git diff-tree --no-commit-id --name-only -r' | |
| alias gf='git fetch' | |
| # README: gfa is `git fetch --all --tags --prune` (no version gating shown there) [oai_citation:3‡GitHub](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/refs/heads/master/plugins/git/README.md) | |
| alias gfa='git fetch --all --tags --prune' | |
| alias gfo='git fetch origin' | |
| alias gg='git gui citool' | |
| alias gga='git gui citool --amend' | |
| alias ghh='git help' | |
| alias glgg='git log --graph' | |
| alias glgga='git log --graph --decorate --all' | |
| alias glgm='git log --graph --max-count=10' | |
| alias glod="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'" | |
| alias glods="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short" | |
| alias glol="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'" | |
| alias glola="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all" | |
| alias glols="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --stat" | |
| alias glo='git log --oneline --decorate' | |
| alias glog='git log --oneline --decorate --graph' | |
| alias gloga='git log --oneline --decorate --graph --all' | |
| alias glp='git log --pretty=' | |
| alias glg='git log --stat' | |
| alias glgp='git log --stat --patch' | |
| alias gignored='git ls-files -v | grep "^[[:lower:]]"' | |
| alias gfg='git ls-files | grep' | |
| alias gm='git merge' | |
| alias gma='git merge --abort' | |
| alias gmc='git merge --continue' | |
| alias gms='git merge --squash' | |
| alias gmff='git merge --ff-only' | |
| alias gmom='git merge origin/$(git_main_branch)' | |
| alias gmum='git merge upstream/$(git_main_branch)' | |
| alias gmtl='git mergetool --no-prompt' | |
| alias gmtlvim='git mergetool --no-prompt --tool=vimdiff' | |
| alias gl='git pull' | |
| alias gpr='git pull --rebase' | |
| alias gprv='git pull --rebase -v' | |
| alias gpra='git pull --rebase --autostash' | |
| alias gprav='git pull --rebase --autostash -v' | |
| alias gprom='git pull --rebase origin $(git_main_branch)' | |
| alias gpromi='git pull --rebase=interactive origin $(git_main_branch)' | |
| alias gprum='git pull --rebase upstream $(git_main_branch)' | |
| alias gprumi='git pull --rebase=interactive upstream $(git_main_branch)' | |
| alias ggpull='git pull origin "$(git_current_branch)"' | |
| alias ggl='git pull origin $(current_branch)' | |
| alias gluc='git pull upstream $(git_current_branch)' | |
| alias glum='git pull upstream $(git_main_branch)' | |
| alias gp='git push' | |
| alias gpd='git push --dry-run' | |
| alias gpf!='git push --force' | |
| alias ggf='git push --force origin $(current_branch)' | |
| # Version-dependent in README: gpf, gpsupf, gsta. [oai_citation:4‡GitHub](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/refs/heads/master/plugins/git/README.md) | |
| if [[ -n "$_git_version" ]] && is-at-least 2.30 "$_git_version"; then | |
| alias gpf='git push --force-with-lease --force-if-includes' | |
| else | |
| alias gpf='git push --force-with-lease' | |
| fi | |
| alias ggfl='git push --force-with-lease origin $(current_branch)' | |
| alias gpsup='git push --set-upstream origin $(git_current_branch)' | |
| if [[ -n "$_git_version" ]] && is-at-least 2.30 "$_git_version"; then | |
| alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease --force-if-includes' | |
| else | |
| alias gpsupf='git push --set-upstream origin $(git_current_branch) --force-with-lease' | |
| fi | |
| alias gpv='git push --verbose' | |
| alias gpoat='git push origin --all && git push origin --tags' | |
| alias gpod='git push origin --delete' | |
| alias ggpush='git push origin "$(git_current_branch)"' | |
| alias ggp='git push origin $(current_branch)' | |
| alias gpu='git push upstream' | |
| alias grb='git rebase' | |
| alias grba='git rebase --abort' | |
| alias grbc='git rebase --continue' | |
| alias grbi='git rebase --interactive' | |
| alias grbo='git rebase --onto' | |
| alias grbs='git rebase --skip' | |
| alias grbd='git rebase $(git_develop_branch)' | |
| alias grbm='git rebase $(git_main_branch)' | |
| alias grbom='git rebase origin/$(git_main_branch)' | |
| alias grbum='git rebase upstream/$(git_main_branch)' | |
| alias grf='git reflog' | |
| alias gr='git remote' | |
| alias grv='git remote --verbose' | |
| alias gra='git remote add' | |
| alias grrm='git remote remove' | |
| alias grmv='git remote rename' | |
| alias grset='git remote set-url' | |
| alias grup='git remote update' | |
| alias grh='git reset' | |
| alias gru='git reset --' | |
| alias grhh='git reset --hard' | |
| alias grhk='git reset --keep' | |
| alias grhs='git reset --soft' | |
| alias gpristine='git reset --hard && git clean --force -dfx' | |
| alias gwipe='git reset --hard && git clean --force -df' | |
| alias groh='git reset origin/$(git_current_branch) --hard' | |
| alias grs='git restore' | |
| alias grss='git restore --source' | |
| alias grst='git restore --staged' | |
| alias gunwip='git rev-list --max-count=1 --format="%s" HEAD | grep -q "--wip--" && git reset HEAD~1' | |
| alias grev='git revert' | |
| alias grm='git rm' | |
| alias grmc='git rm --cached' | |
| alias gcount='git shortlog --summary -n' | |
| alias gsh='git show' | |
| alias gsps='git show --pretty=short --show-signature' | |
| alias gstall='git stash --all' | |
| alias gstu='git stash --include-untracked' | |
| alias gstaa='git stash apply' | |
| alias gstc='git stash clear' | |
| alias gstd='git stash drop' | |
| alias gstl='git stash list' | |
| alias gstp='git stash pop' | |
| if [[ -n "$_git_version" ]] && is-at-least 2.13 "$_git_version"; then | |
| alias gsta='git stash push' | |
| else | |
| alias gsta='git stash save' | |
| fi | |
| alias gsts='git stash show --patch' | |
| alias gst='git status' | |
| alias gss='git status --short' | |
| alias gsb='git status --short -b' | |
| alias gsi='git submodule init' | |
| alias gsu='git submodule update' | |
| alias gsd='git svn dcommit' | |
| alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk' | |
| alias gsr='git svn rebase' | |
| alias gsw='git switch' | |
| alias gswc='git switch -c' | |
| alias gswd='git switch $(git_develop_branch)' | |
| alias gswm='git switch $(git_main_branch)' | |
| alias gta='git tag --annotate' | |
| alias gts='git tag -s' | |
| alias gtv='git tag | sort -V' | |
| alias gignore='git update-index --assume-unchanged' | |
| alias gunignore='git update-index --no-assume-unchanged' | |
| # README shows this as `git whatchanged...` in the table header row it was `gwch`. [oai_citation:5‡GitHub](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/refs/heads/master/plugins/git/README.md) | |
| alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' | |
| alias gwt='git worktree' | |
| alias gwtls='git worktree list' | |
| alias gwtmv='git worktree move' | |
| alias gwtrm='git worktree remove' | |
| alias gk='gitk --all --branches &!' | |
| alias gke='gitk --all $(git log --walk-reflogs --pretty=%h) &!' | |
| # Special one from README: defines a function then disables globbing for it | |
| # gtl(){ git tag --sort=-v:refname -n --list ${1}\* }; noglob gtl | |
| unset _git_version |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment