]> git.wincent.com - wincent.git/blob - aspects/dotfiles/templates/.gitconfig.erb
feat(fig): support dynamic variables
[wincent.git] / aspects / dotfiles / templates / .gitconfig.erb
1 # <%= variables.figManaged %>
2
3 [alias]
4         abbrev = !sh -c 'git rev-parse --short ${1-`echo HEAD`}' -
5         ack = grep --break --heading
6         amend = commit --amend -v
7         both = diff --ignore-submodules=dirty HEAD
8         br = branch
9         ci = commit -v
10         co = checkout
11         count = !sh -c 'git log --oneline | wc -l'
12         cp = cherry-pick
13
14         # http://stackoverflow.com/questions/224687/git-find-duplicate-blobs-files-in-this-tree/8408640#8408640
15         dupes = !"git ls-tree -r HEAD | cut -c 13- | sort | uniq -D -w 40"
16
17         ff = merge --ff-only
18         fixup = !sh -c 'git commit --fixup=$1 ${@:2}' -
19         fresh = remote update --prune
20         full = show --format=fuller
21
22         # Shortcut for updating all remotes and fast-forwarding to a specific one:
23         # eg. `git get upstream/master`
24         get = "!f() { git fresh && git ff \"$@\"; }; f"
25
26         # equivalent to: graph --all
27         gr = log --graph --all --pretty=format:'%C(auto)%h%Creset%C(auto)%d%Creset %s %C(magenta bold)(%cr)%Creset %C(cyan)<%= '<\%' %>aN>%Creset'
28
29         # requires Git 1.6.3 or later; %C(auto) requires Git 1.8.3 or later
30         graph = log --graph --pretty=format:'%C(auto)%h%Creset%C(auto)%d%Creset %s %C(magenta bold)(%cr)%Creset %C(cyan)<%= '<\%' %>aN>%Creset'
31
32         # Show just the HEAD commit message (no indent) and nothing else
33         message = log -1 --pretty=format:%B
34         msg = message
35
36         no-edit = commit --amend --no-edit
37
38         # %C(auto) requires Git 1.8.3 or later
39         one = log --pretty=format:'%C(auto)%h%Creset %s%C(auto)%d%Creset %C(magenta bold)(%cr)%Creset %C(cyan)<%= '<\%' %>aN>%Creset'
40         oneline = log --pretty=format:'%C(auto)%h%Creset %s%C(auto)%d%Creset %C(magenta bold)(%cr)%Creset %C(cyan)<%= '<\%' %>aN>%Creset'
41
42         # requires Git 1.5.4 or later
43         p = add -p
44         patch = add -p
45
46         # requires Git 1.7.11.3 or later
47         reword = commit --amend --only -v --
48
49         # requires Git 1.6.2 or later
50         rollback = !sh -c 'git reset --merge HEAD~${1-1}' -
51
52         # "smartlog", although it's not that smart.
53         # Equivalent to `git graph --all --simplify-by-decoration.
54         sl = log --graph --pretty=format:'%C(auto)%h%Creset%C(auto)%d%Creset %s %C(magenta bold)(%cr)%Creset %C(cyan)<%= '<\%' %>aN>%Creset' --all --simplify-by-decoration
55
56         st = status
57         staged = diff --cached --ignore-submodules=dirty
58
59         # %C(auto) requires Git 1.8.3 or later
60         ten = log -10 --pretty=format:'%C(auto)%h%Creset%C(auto)%d%Creset %s %C(magenta bold)(%cr)%Creset %C(cyan)<%= '<\%' %>aN>%Creset'
61
62         # compensate for brain damage caused by using Mercurial
63         up = checkout
64
65         wc = whatchanged
66
67         # similar to whatchanged, but gives a dir-level overview (takes param to
68         # diff against; defaults to HEAD if not provided)
69         wd = diff --dirstat=cumulative,files,0
70
71 [branch]
72         autosetupmerge = always
73         autosetuprebase = local
74
75 [branch "master"]
76         rebase = true
77
78 [color]
79         ui = auto
80
81 [color "diff-highlight"]
82         newhighlight = reverse
83         newreset = noreverse
84         oldhighlight = reverse
85         oldreset = noreverse
86
87 [color "interactive"]
88         prompt = blue reverse
89
90 [color "status"]
91         untracked = blue
92
93 [core]
94         excludesfile = ~/.gitignore
95         pager = sh -c "~/.zsh/bin/diff-highlight | less -iFMRSX" -
96         attributesfile = ~/.gitattributes
97
98 # ignored by Git older than 1.8.2
99 [diff]
100         algorithm = histogram
101
102         # Added in Git 2.9.0 (experimental): more readable diffs.
103         compactionHeuristic = true
104
105 [difftool]
106         prompt = false
107 <%- if (variables.gitHubUsername) { -%>
108
109 [github]
110         username = <%= variables.gitHubUsername %>
111 <%- } -%>
112
113 [grep]
114         lineNumber = true
115
116         # Requires PCRE support; ie: `brew install git --with-pcre` (on macOS).
117         patternType = perl
118
119 [help]
120         autocorrect = 2
121
122 [interactive]
123         diffFilter = diff-highlight
124
125 [log]
126         decorate = short
127
128 [merge]
129         conflictStyle = diff3
130         log = 1000
131
132 [pager]
133         show-branch = true
134         status = true
135
136 [protocol]
137         # Added in Git 2.18.0.
138         version = 2
139
140 [push]
141         # Added in Git 1.7.11, default in 2.0, but still required (to avoid warning).
142         default = simple
143
144 [rebase]
145         autosquash = true
146
147 [rerere]
148         enabled = true
149
150 [sendemail]
151         smtpEncryption = tls
152         smtpServer = smtp.gmail.com
153         smtpServerPort = 587
154 <%- if (variables.gitUserEmail) { -%>
155         smtpUser = <%= variables.gitUserEmail %>
156 <%- } -%>
157
158 [status]
159         submodulesummary = true
160
161 [submodule]
162         # Added in Git 2.9.0.
163         fetchJobs = 4
164
165 [user]
166 <%- if (variables.gitUserEmail) { -%>
167         email = <%= variables.gitUserEmail %>
168 <%- } -%>
169 <%- if (variables.gitUserName) { -%>
170         name = <%= variables.gitUserName %>
171 <%- } -%>
172
173 # ignored by Git older than 1.7.10
174 [include]
175         path = .gitconfig.local