[user]
  useConfigOnly = true
[include]
  path = ~/.gitconfig.local
[help]
  autocorrect = 1
[core]
  editor = code --wait
  excludesfile = ~/.gitignore
  legacyheaders = false
  whitespace = trailing-space,space-before-tab
  pager = delta
[interactive]
  diffFilter = delta --color-only
[add.interactive]
  useBuildtin = false
[delta]
  navigate = true
  light = false
  line-numbers = true
  side-by-side = true
  syntax-theme = Dracula
[alias]
  st = status
  ci = commit
  co = checkout
  br = branch
  rb = rebase
  cp = cherry-pick
  dt = difftool
  hist = log --color --graph --decorate --abbrev-commit --date=short --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(blue)[%an]%Creset' --abbrev-commit --
  ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
  local-branches = !git branch -vv | cut -c 3- | awk '$3 !~/\\[/ { print $1 }'
  stats = shortlog -sn --all --no-merges
  today = log --since=00:00:00 --all --no-merges --oneline
  prune = fetch --prune
  undo = reset --soft HEAD^
  stash-all = stash save --include-untracked
  app-status = !git remote update >/dev/null && git --no-pager log origin/production..origin/master --pretty=oneline >&2 | pbcopy
  unstage = "reset HEAD --"
  merged = "branch --merged"
  unmerged = "branch --no-merge"
  branches = for-each-ref --sort=-committerdate --format=\"%(color:blue)%(authordate:relative)\t%(color:red)%(authorname)\t%(color:white)%(color:bold)%(refname:short)\" refs/remotes
  ignored = "ls-files --others --directory"
  # Assume workflow
  assume = "update-index --assume-unchanged"
  unassume = "update-index --no-assume-unchanged"
  assumed = "!git ls-files -v | grep ^h | cut -c 3-"
  unassumeall = "!git assumed | xargs git update-index --no-assume-unchanged"
  assumeall = "!git st -s | awk {'print $2'} | xargs git assume"
  # Rebase workflow
  mainbranch = "!git remote show origin | sed -n '/HEAD branch/s/.*: //p'"
  synced = "!git pull origin $(git mainbranch) --rebase"
  update = "!git pull origin $(git rev-parse --abbrev-ref HEAD) --rebase"
  squash = "!git rebase -v -i $(git mainbranch)"
  publish = push origin HEAD --force-with-lease
  pub = publish
  # GitHub
  hub = "!gh repo view --web"
[apply]
  whitespace = fix
[color]
  status = auto
  diff = auto
  branch = auto
  interactive = auto
  ui = 1
[push]
  default = upstream
  followTags = true
  autoSetupRemote = true
[status]
  showUntrackedFiles = all
[transfer]
  fsckobjects = true
[i18n]
  commitencoding = UTF-8
  logoutputencoding = UTF-8
[repack]
  usedeltabaseoffset = true
[branch]
  autosetupmerge = true
  sort = -authordate
[diff]
  tool = Kaleidoscope
  algorithm = patience
  colorMoved = default
[difftool]
  prompt = false
[difftool "Kaleidoscope"]
	cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
[merge]
  conflictstyle = diff3
  tool = Kaleidoscope
[mergetool]
  prompt = false
  keepBackup = false
[mergetool "Kaleidoscope"]
	cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
  trustexitcode = true
	trustExitCode = true
[mergetool "nvim"]
  cmd = nvim -f -c \"Gdiffsplit!\" \"$MERGED\"
[mergetool "code"]
  cmd = "code $MERGED"
  keepBackup = false
  trustexitcode = true
[rebase]
  autosquash = true
[rerere]
  enabled = 1
[fetch]
  prune = true
  fsckobjects = false
[filter "lfs"]
  required = true
  smudge = git-lfs smudge -- %f
  process = git-lfs filter-process
  clean = git-lfs clean -- %f
[web]
  browser = open
[hub]
  host = source.xing.com
[pull]
  ff = only
[commit]
  gpgsign = true
