blob: 60ec3ed9f94faf29f600d33338c709d22d2e3707 (
plain)
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
# ref:
# https://qiita.com/sfus/items/063797a1dd8fdc7d032f
# https://github.com/jonas/tig/wiki/Bindings
#====================
# geineric
#====================
bind generic g none
bind generic gg move-first-line
bind generic G move-last-line
bind generic <C-H> scroll-left
bind generic <C-L> none
bind generic <C-L> scroll-right
bind generic <Esc>l screen-redraw
# toggle/copy commit id
bind generic xx +sh -c "echo -n %(commit) | head -c7 | xclip -sel c && echo Commit Clipped!"
bind generic xc +sh -c "echo -n %(commit) | xclip -sel c && echo Full Commit Clipped!"
bind generic xb +sh -c "echo -n %(branch) | xclip -sel c && echo Branch Clipped!"
bind generic xrb +sh -c "echo -n %(remote):%(branch) | xclip -sel c && echo Remote Branch Clipped!"
bind generic xf +sh -c "echo -n %(file) | xclip -sel c && echo File Clipped"
bind generic xt +sh -c "echo -n %(tag) | xclip -sel c && echo tag Clipped"
bind generic gr view-grep
# toggle case sensitive for search
bind generic w :toggle ignore-case
# override refresh
bind generic R none
bind generic <C-R> refresh
# see reflog, reset refernece
bind generic L >sh -c "git reflog --pretty=raw | tig --pretty=raw"
bind generic gl ?git reset --hard HEAD@{"%(prompt Enter HEAD@{} number: )"}
# highlight diff without +/-
set diff-show-signs = false
set diff_column_highlight = ALL
# misc settings
set ignore-case = true
set line-graphics = utf-8
set refresh-mode = auto
#====================
# main view
#====================
set main-view = \
date:relative \
author:abbreviated \
id \
commit-title:graph=v2,refs=true
# override graph toggling
bind main G none
bind main G move-last-line
bind main ` :toggle commit-title-graph
# move
bind main <C-J> :move-next-merge
bind main <C-K> :move-prev-merge
bind main gh :goto HEAD
bind main ; :goto %(commit)^2
# branch
bind main b none
bind main bn @git branch "%(prompt Enter branch name: )" %(commit)
bind main bd @git branch -d "%(prompt Delete branch: )"
bind main bbd @git branch -d %(branch)
bind main bD ?>git branch -D "%(prompt Delete branch anyway: )"
bind main bbD ?>git branch -D %(branch)
bind main bv +sh -c "git branch -vv | grep %(branch)"
bind main c @sh -c "git branch --points-at=%(commit) | \
sed -n '/^*/ {n;p}' | \
(cat -; echo %(commit)) | \
head -1 | \
xargs git checkout"
bind main B !git checkout -b "%(prompt Enter branch name: )" %(commit)
# commit
bind main a ?>git commit --amend
bind main 3 >git commit --allow-empty -m "%(prompt Empty commit, enter message: )"
# merge
bind main m ?git merge %(commit)
bind main M ?git merge %(branch) --no-ff
bind main gm ?git merge %(remote)/%(branch)
bind main gM ?git merge %(remote)/%(branch) --no-ff
# push
bind main p none
bind main pp ?git push
bind main pF ?git push -f
bind main pP ?git push -u %(remote) %(branch):%(branch)
bind main pr ?git push -u '%(prompt Which remote? )' %(branch):%(branch)
bind main pd ?git push %(remote) :%(branch)
bind main pu ?git pull
bind main pU ?git pull '%(prompt Which remote? )' %(branch):%(branch)
# reset/rebase/revert
bind main u ?git reset %(commit)
bind main U ?sh -c "git reset %(commit) && git stash push -m 'deprecated from reset'"
bind main gu ?git reset %(commit) --hard
bind main R !?git rebase -i %(commit)
bind main ! ?git revert %(commit)
# tag
bind main Tn @git tag "%(prompt Enter tag name: )" %(commit)
bind main TN !git tag "%(prompt Enter tag name: )" %(commit) -a
bind main Ts >tig show %(tag)
bind main Td @git tag -d "%(prompt Delete tag: )"
bind main Tp ?git push --tags
bind main gdt @git tag -d %(tag)
# android
bind main <Esc>b !sh scripts/bump_version.sh
# make patches
bind main S ?>git format-patch -1 %(commit)
bind main <C-S> ?>git format-patch %(commit)
# show diff based on revision
bind main . >sh -c "git diff %(commit) | tig"
bind main > >sh -c "git diff %(commit) --no-prefix -U1000 | tig"
# Hub
bind main i @hub browse -- commit/%(commit)
# note
#bind generic gnn !git notes edit %(commit)
#bind generic gnr !git notes remove %(commit)
#====================
# blame view
#====================
bind blame m >tig %(file)
bind blame xx +sh -c "echo -n %(blob) | head -c7 | xclip -sel c && Blob Clipped"
bind blame xb +sh -c "echo -n %(blob) | xclip -sel c && Full Blob Clipped"
set blame-view = author:abbreviated date:relative id:yes,color line-number:yes text
#====================
# blob view
#====================
bind blob m >tig %(file)
#====================
# status view
#====================
bind status j :/^[MADRU?]
bind status k :?^[MADRU?]
# stash
bind status s ?>git stash
bind status S @git stash push -m "%(prompt Enter stash name: )"
bind status gs !git stashstaged
bind status U !git checkout --patch -- %(file)
# quick commit
bind status c @git commit -m "%(prompt Enter commit message: )"
bind status a ?>git commit --amend
bind status p ?>sh -c "git commit -m 'update' && git push"
bind status d ?>rm %(file)
# solve conflict
bind status Ra @git rebase --abort
bind status Rc @git rebase --continue
bind status <F4> !sh -c "git difftool -y \"$(git rev-parse --show-toplevel)/%(file)\""
bind status Tu @git update-index --assume-unchanged %(file)
# apply patch file
bind status <C-O> ?git am %(file)
#====================
# stash view
#====================
bind stash a ?git stash apply %(stash)
bind stash d ?>git stash drop %(stash)
bind stash p ?>git stash pop %(stash)
# rename a stash
bind stash n @sh -c "git stash drop %(stash) | \
awk '{print $3}' | \
tr -d '()' | \
xargs git stash store -m '%(prompt Enter stash name: )'"
#====================
# stage view
#====================
bind stage <C-J> :/^@@
bind stage <C-K> :?^@@
bind stage <Esc>j :/^diff --(git|cc)
bind stage <Esc>k :?^diff --(git|cc)
#====================
# tree view
#====================
set tree-view = author:abbreviated date:relative mode file-size:units id:no file-name
bind tree t +git cat-file -p %(commit)
bind tree d ?rm %(file)
bind tree m >tig %(file)
bind tree xx +sh -c "echo -n %(blob) | head -c7 | xclip -sel c && echo Blob Clipped"
bind tree xb +sh -c "echo -n %(blob) | xclip -sel c && echo Full Blob Clipped"
bind tree xt +sh -c "git rev-parse %(commit)^{tree} | xclip -sel c -o | awk '{print \"Tree Clipped\", $1}'"
bind tree xc +sh -c "echo -n %(commit) | head -c7 | xclip -sel c && echo Commit Clipped"
#====================
# refs view
#====================
bind refs C none
bind refs c @git checkout %(branch)
bind refs b none
bind refs bd @git branch -d %(branch)
bind refs bD ?git branch -D %(branch)
bind refs pd ?git push %(remote) :%(branch)
bind refs r none
bind refs rbu ?git branch -rd %(remote)/%(branch)
bind refs U ?git fetch --all
bind refs F ?git fetch %(remote)
bind refs <C-F> ?git fetch %(remote) %(branch)
bind refs . >sh -c "git diff %(branch) | tig"
bind refs > >sh -c "git diff %(branch) --prefix -U1000 | tig"
#====================
# log view
#====================
bind log <C-J> :/^commit
bind log <C-K> :?^commit
#====================
# diff view
#====================
bind diff <C-J> :/^@@
bind diff <C-K> :?^@@
bind diff <Esc>j :/^diff --(git|cc)
bind diff <Esc>k :?^diff --(git|cc)
#====================
# help view
#====================
# edit tigrc
bind help e >sh -c "vim ~/.tigrc"
bind help <C-R> :source ~/.tigrc
#====================
# color
#====================
color diff-chunk white magenta
|