# 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 S none bind generic scroll-left bind generic none bind generic scroll-right bind generic 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 xrb +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 xrt +sh -c "echo -n %(tag) | xclip -sel c && echo tag Clipped" bind generic xb +sh -c "echo -n %(blob) | head -c7 | xclip -sel c && echo Blob Clipped" bind generic xB +sh -c "echo -n %(blob) | xclip -sel c && echo Full Blob Clipped" bind generic gp view-grep # toggle case sensitive for search bind generic w :toggle ignore-case # refresh like modern browser bind generic 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 :move-next-merge bind main :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 bN @git branch "%(prompt Enter branch name: )" --track %(remote)/%(branch) bind main bu @git branch --set-upstream-to="%(prompt Set remote/branch: )" bind main bc @git checkout -b "%(prompt Checkout at new branch: )" %(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 bm @git branch -m %(branch) "%(prompt New branch name: )" bind main c @sh -c "git branch --points-at=%(commit) | \ sed -n '/^*/ {n;p}' | \ (cat -; echo %(commit)) | \ head -1 | \ xargs git checkout" # 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) # merge with current remote bind main gM ?git merge %(remote)/%(branch) --no-ff # merge-no-ff with current remote # push bind main p none # override default pager binding 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 pD ?git push '%(prompt Which remote? )' :'%(prompt Which branch? )' # fetch bind main gf ?git fetch %(remote) # Go to Fetch bind main gF ?git fetch '%(prompt Which remote? )' # Go to Fetch certain remote bind main pu ?git pull bind main pU ?git pull '%(prompt Which remote? )' %(branch):%(branch) # reset/rebase/revert bind main uu ?git reset %(commit) bind main us ?sh -c "git reset %(commit) && git stash push -m 'deprecated from reset'" # reset and stash the changes bind main uh ?git reset %(commit) --hard bind main B !?git rebase -i %(commit) bind main gb !?git rebase --onto '%(prompt Rebase onto which branch? )' %(commit) %(repo:head) 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 Tm @sh -c 'git tag -d %(tag) && git tag "%(prompt Enter tag name: )" %(commit)' bind main TM @sh -c 'git cat-file -p %(tag) | sed -n \'6,$p\' | git tag -a -F - "%(prompt Enter tag name: )" && git tag -d %(tag)' bind main Ts >tig show %(tag) bind main Td @git tag -d "%(prompt Delete tag: )" bind main Tp ?git push --tags bind main pt ?git push %(remote) %(tag) bind main TTd @git tag -d %(tag) # submodule bind main Su ?>git submodule update bind main Si ?>git submodule init # make patches bind main PP ?>git format-patch %(commit) bind main P1 ?>git format-patch -1 %(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) bind main I >sh -c "hub issue | tig" # android bind main !sh scripts/bump_version.sh # note #bind generic gnn !git notes edit %(commit) #bind generic gnr !git notes remove %(commit) #==================== # blame view #==================== bind blame m >tig %(file) bind blame . >sh -c "git diff %(ref) -- %(file) | tig" bind blame > >sh -c "git diff %(ref) --no-prefix -U1000i -- %(file) | tig" 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 # 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" # quick push bind status d ?>rm %(file) # solve conflict bind status U ?>git reset --hard bind status gc @git clean -f bind status Ba @git rebase --abort bind status Bc @git rebase --continue bind status !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 ?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 :/^@@ bind stage :?^@@ bind stage j :/^diff --(git|cc) bind stage 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 xt +sh -c "git rev-parse %(commit)^{tree} | xclip -sel c -o | awk '{print \"Tree Clipped\", $1}'" bind tree . >sh -c "git diff %(ref) -- %(file) | tig" #==================== # 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 brd ?git branch -rd %(remote)/%(branch) bind refs U ?git fetch --all bind refs F ?git fetch %(remote) bind refs ?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 :/^commit bind log :?^commit #==================== # diff view #==================== bind diff :/^@@ bind diff :?^@@ bind diff j :/^diff --(git|cc) bind diff k :?^diff --(git|cc) bind diff u @git checkout %(commit)^ %(file) #==================== # help view #==================== # edit tigrc bind help e >sh -c "vim ~/.tigrc" bind help :source ~/.tigrc #==================== # color #==================== color diff-chunk white magenta