aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/%HOME%/.gitconfig
blob: 29851fccd5e4724be2a60ddca29070b2bce05aba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[user]
	name = Egor Tensin
	email = Egor.Tensin@gmail.com

[core]
	# Don't touch line endings (I hate the fact that this is an option).
	# My go-to approach now is to store everything w/ LF line endings in
	# index (using '* text=auto' in root .gitattributes), and checkout with
	# specific line endings as required (using additional records in
	# .gitattributes, like '*.sh text eol=lf', '*.bat text eol=crlf',
	# etc.).
	autocrlf = false

[push]
	# If no refspec is given, push to the branch with the same name.
	default = current

# Git submodules suck, but they suck less if you read
# https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407.

# Show submodule changes in a more verbose way.
[diff]
	submodule = log
	wsErrorHighlight = all
[status]
	submoduleSummary = true
[alias]
	# Pull and sync submodules.
	pulll = !git pull && git submodule sync --recursive && git submodule update --init --recursive

# Automatically remove obsolete things/publish new things.
[fetch]
	# Prune old branches:
	prune = true
	# Prune old tags (since Git 2.17.0):
	pruneTags = true
[push]
	# Push new tags:
	followTags = true

[log]
	# Follow renames:
	follow = true

[merge]
	# Show the common ancestor when resolving a conflict:
	conflictStyle = diff3
[mergetool]
	# I don't even know why those are necessary, since we can abort and
	# retry merges.
	keepBackup = false

[pull]
	# Don't create a merge commit when pulling, fast-forward only.
	ff = only

[alias]
	clean-all = clean -fdx
	clean-ignored = clean -fdX
	clean-unknown = clean -fd

	l = log --oneline
	# This is awesome: http://stackoverflow.com/a/1838938/514684
	ll = log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"
	lll = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"

	# I think this is only usable on Cygwin, given all the file permission
	# madness there:
	xx = update-index --add --chmod=+x

	hide = update-index --skip-worktree
	unhide = update-index --no-skip-worktree
	hidden = !git ls-files -v | grep --basic-regexp \"^\\([[:lower:]]\\|S\\)\"

	# Squash the staging area with the latest commit.
	# Pass "-a" to skip using `git add`.
	fixup = !GIT_EDITOR=true git commit --amend

	# Life is too short.
	s = status
	co = checkout

[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	clean = git-lfs clean -- %f
	required = true

[include]
	# Include a file with computer-specific settings (like a different
	# [user] section under a specific directory, etc.).
	path = ~/.gitconfig_local