dotfiles/.config/git/config

130 lines
3.3 KiB
Plaintext

[core]
autocrlf = input
editor = nvim
[submodule]
recurse = true
[rerere]
enabled = true
# Accelerate packing by automatically determining thread count
[pack]
threads = 0
[pull]
ff = only
[checkout]
defaultRemote = origin
[diff]
tool = nvim
[merge]
tool = nvim
[mergetool "nvim"]
cmd = nvim -f -c \"Gdiffsplit!\" \"$MERGED\"
prompt = false
[difftool "nvim"]
cmd = "nvim -d \"$LOCAL\" \"$REMOTE\""
# Automatically push to branch with matching name
[push]
default = current
# Disable pagination for branch commmand by default
[pager]
branch = false
[grep]
lineNumber = 1
[color "status"]
added = green
changed = yellow
untracked = magenta
[user]
email = 27jf@pm.me
name = xerus2000
[mailmap]
file = /home/janek/.config/yadm/.mailmap
[http]
lowSpeedLimit = 1000
lowSpeedTime = 3
[alias]
st = status -sb
stv = --paginate status -v
stvv = --paginate status -vv
sta = stash
stl = stash list
sts = stash show -v
stp = stash pop
std = stash drop
r = remote -v
b = branch -vv
ref = reflog
rev = rev-parse --short
head = rev-parse --short HEAD
root = rev-parse --show-toplevel
dir = rev-parse --git-dir
curbranch = symbolic-ref --short HEAD
f = fetch
fa = fetch --all
l = !git pull --rebase --autostash || (>&2 echo "Error - aborting rebase!" && git rebase --abort)
lg = log --pretty=tformat:'%C(auto)%h%d %s %Cgreen(%cd) %Cblue<%an>%Creset' --date=human --graph
lo = log --pretty=tformat:'%C(auto)%h%d %s %Cgreen(%cd) %Cblue<%an>%Creset' --date=human --no-merges
ln = !git --no-pager lo -5
my = lo --author [Jj]anek
standup = lo --since yesterday --author [Jj]anek --all
co-authors = !git log | grep -i Co-Authored | awk '!a[$0]++'
when = git for-each-ref --sort=committerdate --format='%(refname:short) * %(authorname) * %(committerdate:relative)' refs/remotes/ # List all branches with their last updates
dir = !git root | sed 's/$/\\/.git/' | grep --color=never "/" # grep ensures a proper exit status on fail
upstream = !git rev-parse --abbrev-ref --symbolic-full-name @{upstream} || git rev-parse --abbrev-ref --symbolic-full-name @{push} || echo origin/$(git curbranch)
sup = !git branch --set-upstream-to @{push}
a = add -u
aa = add -u .
ap = add -p
c = commit -v
co = checkout
cb = checkout -b
cp = cherry-pick
rb = rebase
rbc = rebase --continue
p = push
pf = push --force-with-lease
fs = !git fetch && git st
lu = !git pull upstream $(git curbranch)
luu = !git pull upstream $(git curbranch) && git push --no-verify
cap = git commit --all --amend --no-edit && git push --force-with-lease
rh = reset HEAD~
rs = reset --keep
ru = reset --keep @{upstream}
unstage = reset HEAD --
gcr = !git gc && git repack -a -d
ready = rebase -i @{push}
format-head = !git stash && git-clang-format HEAD~ && git commit -a --amend --no-edit && git stash pop
sm = submodule update --init --recursive
cme = commit -v --edit --message
# yadm
cgit = !yadm cme "config/git:" -- $XDG_CONFIG_HOME/git/config $CONFIG_SHELLS/git $HOME/.local/bin/git-*
cvim = !yadm cme "config/nvim:" -- $XDG_CONFIG_HOME/nvim/init*
cshell = !yadm cme "config/shell:" -- $CONFIG_SHELLS
cbin = !yadm cme "bin:" -- $HOME/.local/bin
# data
journal = !git cme "notes/journal:" -- $(git root)/2-standards/notes/journal
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true