Here are my git aliases, grouped by categories.

[alias]
# Discard duplicate leading “git” (e.g. “git git status”)
git = "!git"

# The basic aliases
s = status
cm = commit -m
cp = cherry-pick

# Branch related aliases
br = branch
co = checkout
com = checkout master
cod = checkout develop
groom = "!f() { git branch --merged | egrep -v \"(^\\*|main|master|develop)\" | xargs git branch -d; }; f"

# Syncing related aliases
pur = pull --rebase
prune = fetch --prune

# Rebase related aliases
ri = rebase -i
rb = "!sh -c \"git rebase -i HEAD~$1\" -"
rc = rebase --continue
ra = rebase --abort
rs = rebase --skip
re = rebase --exit
rod = rebase origin/develop
rom = rebase origin/master

# Stash related aliases
poop = stash pop
wip = commit -m "WIP" -n
stsh = stash save --include-untracked

# Push related aliases
force = push --force-with-lease
fam = "!f() { git add . && git amend && git force; }; f"

# Mistake related aliases
abort = checkout -- .
wait = reset HEAD
undo = reset --soft HEAD^
amend = commit --amend --no-edit

# Diff related aliases
changes = diff --name-status
lg = log --pretty=oneline --abbrev-commit --graph --decorate

# Alias related aliases
aliases = ! git config --get-regexp ^alias\\. | sed -e s/^alias\\.// -e s/\\ /\\ =\\ /

Read previous snippet: getTextFromTree()

Read next snippet: git-config