# Global Git configuration file.
-# Copyright (C) 2011-2013 Simon Ruderich
+# Copyright (C) 2011-2017 Simon Ruderich
#
# This file is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# Hunk header.
frag = magenta bold
# Function in hunk header.
- function = magenta bold
+ func = blue bold
# Removed lines.
old = red bold
# Added lines.
# Commit headers.
commit = cyan
+# GNU grep-like colors.
+[color "grep"]
+ filename = magenta
+ linenumber = green
+
[core]
editor = vim
# Global gitattributes file. Thanks to canton7 in #git on Freenode
c = commit --verbose
ca = commit --verbose --amend
cad = commit --verbose --amend --date=
- d = diff PATIENCE
- dw = diff PATIENCE --color-words
- dc = diff PATIENCE --cached
- dcw = diff PATIENCE --cached --color-words
+ d = diff
+ dw = diff --color-words
ds = diff --stat
+ dc = diff --cached
+ dcw = diff --cached --color-words
+ dcs = diff --cached --stat
+ g = grep
+ gi = grep --ignore-case
s = status
l = log
ls = log --stat
- lp = log --patch PATIENCE
- lpw = log --patch PATIENCE --color-words
+ lp = log --patch
+ lpw = log --patch --color-words
+ ld = show --date=short -s --pretty='format:%h (\"%s\", %ad)' # describe
a = add
ap = add --patch
au = add --update
+ rs = reset
+ rsh = reset --hard
+ rsp = reset --patch
+ rv = revert
+ cl = clean -ndx
+ clf = clean -fdx
## Branches.
co = checkout
b = branch -a -v
+ br = branch
m = merge
mo = merge origin/master
+ re = rebase
+ rei = rebase --interactive
+ rec = rebase --continue
+ cp = cherry-pick
+ ## Submodules.
+ sm = submodule
## Remote.
f = fetch
t = tag
ss = stash save
ssk = stash save --keep-index
ssu = stash save --include-untracked
- sa = stash apply
- sp = stash pop
+ sa = stash apply --index
+ sp = stash pop --index
## Custom commands.
#
# Detect copies and renames.
renames = copy
+ # Diff algorithm to use.
+ algorithm = histogram
+
+ # Highlight moved code in a different color.
+ colorMoved = zebra
+
+ # Replace "a/" and "b/" prefix in diffs with characters describing the
+ # context (e.g. "i/"ndex and "w/"ork tree).
+ mnemonicprefix = true
+
# Change the definition of a word as used by diff --color-words to be
# shorter (not only spaces) and thus simplify the generated diffs.
# Words ([a-zA-Z0-9_]+) are matched, or a single non-word character
# changes to non-word characters are shown character wise (e.g. from
# "==" to "!=" as "[-=-]{+!+}="); [-..-] is removal, {+..+} is
# addition. See t/ for some tests and examples.
- wordregex = [a-zA-Z0-9_]+|[^a-zA-Z0-9_]
+ wordRegex = [a-zA-Z0-9_]+|[^a-zA-Z0-9_]
# Allow diffing of some binary files.
#
-# `pdftotext-` is a wrapper around pdftotext which writes to stdout.
-# `sqlite3dump` is a wrapper calling `sqlite3 database-file .dump`.
+# "sh -c '..' ARGV0" is used when the programs require additional arguments
+# which are passed after ARGV0 by git.
[diff "gzip"]
textconv = gzip -d -c
[diff "pdf"]
- textconv = PWD/bin/pdftotext-
+ textconv = sh -c 'exec pdftotext "$@" -' ARGV0
[diff "sqlite"]
- textconv = PWD/bin/sqlite3dump
+ textconv = sh -c 'exec sqlite3 "$@" .dump' ARGV0
+
+[log]
+ # Display branches/tag names in log (same as log's --decorate option).
+ decorate = short
+ # If a single file is given to `git log`, automatically use --follow.
+ follow = yes
[merge]
tool = vimdiff
+ # Merge upstream branch if `git merge` is called without arguments.
+ defaultToUpstream = yes
+
+[push]
+ # When running git push without a refspec push only the current
+ # branch, see man page git-config(1) for details. Default since Git
+ # 2.0.
+ default = simple
+
[format]
# When using git format-patch use threads and add all patches as
# replies to the first one.
[transfer]
# Automatically fsck objects when receiving them (respected by git
# receive-pack and git fetch (>= 1.7.8, for fetch)).
- fsckobjects = true
+ fsckObjects = yes
+
+
+# NON-GIT SETTINGS
+
+[annex]
+ # My SSH config already uses ControlMaster where appropriate.
+ sshcaching = false
# vim: ft=gitconfig