Skip to content

Instantly share code, notes, and snippets.

@kirkegaard
Last active September 15, 2024 00:51
Show Gist options
  • Save kirkegaard/3d917454be7a09bcd7c586594ad4dc53 to your computer and use it in GitHub Desktop.
Save kirkegaard/3d917454be7a09bcd7c586594ad4dc53 to your computer and use it in GitHub Desktop.
[user]
name = Christian Kirkegaard
email = [email protected]
signingkey = /Users/christian/.ssh/id_rsa.pub
[github]
user = kirkegaard
[hub]
protocol = https
[credential]
helper = osxkeychain
[gpg]
format = ssh
[commit]
gpgsign = true
[merge]
# Include summaries of merged commits in newly created merge commit messages
log = true
tool = vimdiff
conflictstyle = diff3
[alias]
# View the SHA, description, and history graph of the latest 20 commits
l = log --pretty=oneline -n 20 --graph
# 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 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"
# Pull in remote changes for the current repository and all its submodules
p = !"git pull; git submodule foreach git pull origin master"
# Clone a repository including all submodules
c = clone --recursive
# Commit all changes
ca = !git add -A && git commit -av
# Switch to a branch, creating it if necessary
go = checkout -B
# Show verbose output about tags, branches or remotes
tags = tag -l
branches = branch -a
remotes = remote -v
# 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"
st = status
br = branch
ci = commit
co = checkout
df = diff
lg = log --oneline --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
pp = !git pull && git push
pu = !"git fetch origin -v; git fetch upstream -v; git merge upstream/master"
this = !git init && git add . && git commit -m \"initial commit\"
undo = "!f() { git reset --hard $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f"
du = !"git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | sort --numeric-sort --key=2 | cut -c 1-12,41- | $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest"
stash-untracked = "!f() { \
git stash; \
git stash -u; \
git stash pop stash@{1}; \
}; f"
[apply]
# Detect whitespace errors when applying a patch
whitespace = fix
[core]
# Use custom `.gitignore` and `.gitattributes`
excludesfile = ~/.gitignore
attributesfile = ~/.gitattributes
# Treat spaces before tabs, lines that are indented with 8 or more spaces, and all kinds of trailing whitespace as an error
whitespace = space-before-tab,indent-with-non-tab,trailing-space
editor = vim
longpaths = true
precomposeunicode = false
ignorecase = false
[color]
ui = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
whitespace = red reverse
[color "status"]
added = yellow
changed = green
untracked = cyan
[difftool]
prompt = false
[mergetool]
prompt = false
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[init]
defaultBranch = main
# Use `origin` as the default remote on the `master` branch in all cases
[branch "master"]
remote = origin
merge = refs/heads/master
# URL shorthands
[url "https://github.com"]
insteadOf = git://github.com
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment