[user]
  # Insert ID for GPG key being used for signing git commits
  #signingkey = <GPG_KEY_ID>
  useConfigOnly = true
  # Name to use for commits
  #name = FULLNAME
  # E-mail to use for commits
  #email = name@example.com
[credential]
  # If using https: on linux. Enable credential.helper to store logins.
  #helper = store
  # If using https: on Windows Enable credential.helper to store logins.
  #helper = manager
[commit]
  # Set to true if commits should be gpg signed by default
  gpgsign = false
[format]
  commitMessageColumns = 72
  # Adds `Signed-off-by` to end of commit messages. If set to true
  # adds line by default. Can also be added on case-by-case with
  # `-s/--signoff` switch when running `git commit`.
  signoff = false
[gpg]
  # Windows specific config - Uncomment to use.
  #program = C:\\Program Files (x86)\\GnuPG\\bin\\gpg.exe
  # Linux/BSD specific config - Uncomment to use.
  #program = /usr/bin/gpg
[core]
  quotepath = false
  excludesfile = ~/.gitignore_global
  autocrlf = input
  # Change to fx. vim or something else for default editor when writing commit messages.
  editor = nano
  #editor = vim
  # If you prefer using Notepad++ on Windows, uncomment this and comment out editor above.
  #editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
  whitespace = fix,-indent-with-non-tab,trailing-space,cr-at-eol
  safecrlf = false
[web]
  browser = googlechrome
[pack]
  # Avoid large memory utilization on shared servers / shell accounts
  windowMemory = 25m
  packSizeLimit = 25m
  threads = 1
  deltaCacheSize = 25m
[filter "lfs"]
  required = true
  clean = git-lfs clean -- %f
  smudge = git-lfs smudge -- %f
  process = git-lfs filter-process
[filter "media"]
  clean = git-media-clean %f
  smudge = git-media-smudge %f
[log]
  mailmap = true
[mailmap]
  file = ~/.mailmap
[push]
  default = matching
[pull]
  rebase = true
[rebase]
  autoStash = true
[merge]
  log = true
  ff = false
  renormalize = true
  verbosity = 4
  tool = winmerge
[mergetool]
  keepBackup = false
  prompt = false
[url "https://bitbucket.org/"]
  insteadOf = bb:
[url "https://github.com/"]
  insteadOf = gh:
[url "https://gist.github.com/"]
  insteadOf = gist:
[url "https://gitlab.com/"]
  insteadOf = gl:
[url "git@git.dn42.us:"]
  insteadOf = dn42:
[url "https://git.data.coop/"]
  insteadOf = coop:
[color]
  ui = auto
[color "branch"]
  current = yellow bold
  local = green bold
  remote = cyan bold
[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red bold
  new = green bold
  whitespace = red reverse
[color "status"]
  added = green bold
  changed = yellow bold
  untracked = red bold
[gitflow "prefix"]
  feature = feature/
  release = release/
  hotfix = hotfix/
  support = support/
  versiontag = v
[remote "upstream"]
  # Ensures we do not try to push to remotes named upsteam.
  pushurl = nothing
[alias]
  a = add --all
  ai = add -i
  #############
  ap = apply
  as = apply --stat
  ac = apply --check
  #############
  ama = am --abort
  amr = am --resolved
  ams = am --skip
  #############
  b = branch
  ba = branch -a
  bd = branch -d
  bo = "!f() { git branch $1 && git checkout $1; }; f"
  br = branch -r
  #############
  c = commit
  ca = commit --all
  cm = commit -m
  cem = commit --allow-empty -m
  cam = commit -am
  cd = commit --amend
  cad = commit --all --amend
  ced = commit --allow-empty --amend
  #############
  d = diff
  dc = diff --cached
  dl = difftool
  dlc = difftool --cached
  dk = diff --check
  dp = diff --patience
  dck = diff --cached --check
  #############
  f = fetch
  fo = fetch origin
  fu = fetch upstream
  #############
  fp = format-patch
  #############
  fk = fsck
  #############
  g = grep -p
  #############
  l = log --oneline
  lg = log --oneline --graph --decorate
  lsg = log --show-signature -3
  #############
  ls = ls-files
  lsf = "!git ls-files | grep -i"
  #############
  m = merge
  ma = merge --abort
  mc = merge --continue
  ms = merge --skip
  merge-to = "!f() { git checkout $1 && git merge $2 && git checkout -; }; f"
  #############
  o = checkout
  ob = checkout -b
  #############
  pr = prune --verbose
  #############
  ps = push
  psf = push -f
  psu = push -u
  pso = push origin
  psao = push --all origin
  psfo = push -f origin
  psuo = push -u origin
  psom = push origin master
  psfom = push -f origin master
  psuom = push -u origin master
  #############
  pl = pull
  plu = pull -u
  plo = pull origin
  plp = pull upstream
  plom = pull origin master
  plpm = pull upstream master
  #############
  pb = pull --rebase
  pbo = pull --rebase origin
  pbp = pull --rebase upstream
  pbom = pull --rebase origin master
  pbpm = pull --rebase upstream master
  #############
  rb = rebase
  rba = rebase --abort
  rbc = rebase --continue
  rbi = rebase --interactive
  rbs = rebase --skip
  #############
  re = reset
  rh = reset HEAD
  reh = reset --hard
  rem = reset --mixed
  res = reset --soft
  rehh = reset --hard HEAD
  remh = reset --mixed HEAD
  resh = reset --soft HEAD
  #############
  r = remote
  ra = remote add
  rr = remote rm
  rv = remote --verbose
  rm = remote rename
  rp = remote prune
  rs = remote show
  rao = remote add origin
  rau = remote add upstream
  rso = remote show origin
  rsu = remote show upstream
  rpo = remote prune origin
  rpu = remote prune upstream
  #############
  s = status
  sb = status --signoff -b
  #############
  sa = stash apply
  sc = stash clear
  sd = stash drop
  sl = stash list
  sp = stash pop
  ss = stash save
  sw = stash show
  #############
  w = show
  wp = show --patch
  wr = show --patch --no-color
  #############
  svnr = svn rebase
  svnd = svn dcommit
  svnl = svn log --oneline --show-commit
  #############
  assume = update-index --assume-unchanged --verbose
  unassume = update-index --no-assume-unchanged --verbose
  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"
  replace = update-index --verbose --replace
  #############
  ours = "!f() { git checkout --ours $@ && git add $@; }; f"
  theirs = "!f() { git checkout --theirs $@ && git add $@; }; f"
  #############
  whois = "!sh -c 'git log --include -1 --pretty=\"format:%an <%ae>\n\" --author=\"$1\"' -"
  whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
  #############
  barebranch = !sh -c 'git symbolic-ref HEAD refs/heads/$1 && git rm --cached -r . && git clean -xfd' -
  flat = clone --depth 1
  subpull = !git submodule foreach git pull --tags origin master
  subrepo = !sh -c 'filter-branch --prune-empty --subdirectory-filter $1 master' -
  human = name-rev --name-only --refs=refs/heads/*
  serve = !git daemon --reuseaddr --verbose  --base-path=. --export-all ./.git
  # Start a new Git repository with an empty 1st commit
  start = !git init && git commit --allow-empty -m \"Initial commit\"
  snapshot = !git stash save "snapshot: $(date)" && git stash apply "stash@{0}"
  # Use to sign an existing git commit. Use: git resign <COMMIT_ID>
  resign = "!re() { git rebase --exec 'git commit --amend --no-edit --no-verify --gpg-sign --signoff' -i $1; }; re"
