# Git User Config [alias] # View abbreviated SHA, description, and history graph of the latest 20 commits. l = log --pretty=oneline -n 20 --graph --abbrev-commit # View the current working tree status using the short format. s = status -s # Show the diff between the latest commit and the current state. d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat" # `git di $number` shows the diff between the state `$number` revisions ago and the current state. di = !"d() { git diff --patch-with-stat HEAD~$1; }; git diff-index --quiet HEAD -- || clear; d" f = fetch --all p = push pf = push --force-with-lease # Clone a repository including all submodules. c = commit -m a = add # Commit all changes. ca = !git add ':(exclude,attr:builtin_objectmode=160000)' && git commit -av # Switch to a branch, creating it if necessary. go = "!f() { git checkout -b \"$1\" 2> /dev/null || git checkout \"$1\"; }; f" # Show verbose output about tags, branches or remotes tags = tag -l branches = branch --all remotes = remote --verbose # List aliases. aliases = config --get-regexp alias # Amend the currently staged files to the latest commit. amend = commit --amend --reuse-message=HEAD # Credit an author on the latest commit. credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f" # Interactive rebase with the given number of latest commits. reb = "!r() { git rebase -i HEAD~$1; }; r" # Remove the old tag with this name and tag the latest commit with it. retag = "!r() { git tag -d $1 && git push origin :refs/tags/$1 && git tag $1; }; r" # Find branches containing commit ft = "!f() { git describe --always --contains $1; }; f" # Find commits by source code fc = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short -S\ $1; }; f" # Find commits by commit message fm = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short --\ grep=$1; }; f" # Remove branches that have already been merged with main. # a.k.a. ‘delete merged’ dm = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d" # List contributors with number of commits. contributors = shortlog --summary --numbered # Show the user email for the current repository. whoami = config user.email [branch] # show most recently changed branches first sort = -committerdate [init] defaultBranch = main [user] email = adrian@abeyta.earth name = Adrian Abeyta