-
Notifications
You must be signed in to change notification settings - Fork 612
Bindings
Here's a collection of custom bindings you can easily add to your tigrc.
-
Move in diff view with arrow keys:
bind diff <Up> move-up
andbind diff <Down> move-down
-
Intent to add:
bind status N !@git add -N %(file)
(might be useful if you want to add-patch a newly created file) -
Stage a single line:
bind stage 1 stage-update-line
-
Interactive rebase:
bind main B !git rebase -i %(commit)
-
Revert:
bind main ! !git revert %(commit)
-
Create a new branch:
bind refs n !@git branch "%(prompt Enter branch name: )"
-
Add/edit notes for the current commit used during a review:
bind generic T !git notes edit %(commit)
-
less-like page scrolling:
bind generic ^f scroll-page-down
andbind generic ^b scroll-page-up
-
Add verbose flag to git-commit:
bind generic C !git commit -v
-
Amend last commit:
bind generic + !git commit --amend
-
Drop the selected stash:
bind stash D !?git stash drop %(stash)
-
Apply the selected stash:
bind stash A !?git stash apply %(stash)
-
Stash the unstaged changes:
bind status S !?git stash save --keep-index %(prompt)
-
Delete a file:
bind status D !@?rm %(file)
-
Tag the selected commit:
bind main T !@git tag %(prompt) %(commit)
-
Push local changes to origin:
bind status P !git push origin
-
Open the commit on Github:
bind generic B @sh -c "xdg-open 'https://'$(git remote -v | grep -Eo 'github.com[:/][^.]+' | head -1 | tr : /)'/commit/%(commit)'"
-
*Patch the file under the cursor:
bind status P !git add --patch %(file)
-
Copy commit title to clipboard:
bind generic 9 !@sh -c "git show -s --format=%s %(commit) | xclip -selection c" # Linux bind generic 9 !@sh -c "git show -s --format=%s %(commit) | pbcopy" # Mac bind generic 9 !@sh -c "git show -s --format=%s %(commit) > /dev/clipboard" # Cygwin
-
Add selected file to .gitignore and open vim for additional changes:
bind status <Ctrl-r> !sh -c "echo %(file) >> .gitignore && vi .gitignore"
-
Compare changed file in status view:
bind status <F4> !git difftool -y "$(git rev-parse --show-toplevel)/%(file)
-
Compare selected commit in log view (main view) with its parent:
bind main <F4> !git difftool -d %(commit)^!
-
Compare 2 different commits in log view - Select first commit, press F5, select second commit and press hotkey again:
bind main <F5> @git tig-compare-commits %(commit)
that requires the following alias in your .gitconfig:tig-compare-commits = "!f() { \ echo Checking branch existence; \ if [[ $(git branch --list temp-compare-base) != \"\" ]]; then\ echo Branch exists, comparing with $1; \ git difftool -d temp-compare-base..$1; \ git branch --delete temp-compare-base; \ else \ echo Creating initial branch at $1; \ git branch temp-compare-base $1; \ fi;\ }; \