forgit is a utility tool for git taking advantage of fuzzy finder fzf.
Make sure you have fzf installed.
Run following command in your shell to try forgit without installing(for both bash and zsh):
source <(curl -Ss https://raw.githubusercontent.com/wfxr/forgit/master/forgit.plugin.zsh)zplug 'wfxr/forgit'zgen load 'wfxr/forgit'antigen bundle 'wfxr/forgit'Download and source forgit.plugin.zsh or forgit.plugin.sh in your shell config.
Interactive git add selector
Interactive git log viewer
Interactive .gitignore generator
Interactive git diff viewer
Interactive git reset HEAD <file> selector
Interactive git checkout <file> selector
Interactive git stash viewer
Interactive git clean selector
| Keybind | Action |
|---|---|
| Enter | Confirm |
| Tab | Toggle mark |
| ? | Toggle preview window |
| Alt - W | Toggle preview wrap |
| Ctrl - S | Toggle sort |
| Ctrl - R | Toggle selection |
| Ctrl - K / P | Selection move up |
| Ctrl - J / N | Selection move down |
| Alt - K / P | Preview move up |
| Alt - J / N | Preview move down |
You can change the default aliases by defining these variables below.
(To disable all aliases, Set the FORGIT_NO_ALIASES flag.)
# Define them before sourcing the plugin if you don't use any plugin manager.
forgit_log=glo
forgit_diff=gd
forgit_add=ga
forgit_reset_head=grh
forgit_ignore=gi
forgit_restore=gcf
forgit_clean=gclean
forgit_stash_show=gssYou can add default fzf options for forgit, including keybinds, layout, etc.
(No need to repeat the options already defined in FZF_DEFAULT_OPTS)
FORGIT_FZF_DEFAULT_OPTS="
--exact
--border
--cycle
--reverse
--height '80%'
"Customizing fzf options for each command individually is also supported:
| Command | Option |
|---|---|
ga |
FORGIT_ADD_FZF_OPTS |
glo |
FORGIT_LOG_FZF_OPTS |
gi |
FORGIT_IGNORE_FZF_OPTS |
gd |
FORGIT_DIFF_FZF_OPTS |
grh |
FORGIT_RESET_HEAD_FZF_OPTS |
gcf |
FORGIT_CHECKOUT_FZF_OPTS |
gss |
FORGIT_STASH_FZF_OPTS |
gclean |
FORGIT_CLEAN_FZF_OPTS |
The full loading order of fzf options is:
FZF_DEFAULT_OPTS(fzf global) -> FORGIT_FZF_DEFAULT_OPTS(forgit global) -> FORGIT_CMD_FZF_OPTS(command specific).
-
diff-so-fancy: Improve thegit diffoutput. -
bat: Syntex highlight forgitignore. -
emoji-cli: Emoji support forgit log.
- Hit
qto quit from full screen preview any time. - Commands like
glo,gd,gcfandgcleanaccept path arguments to restrain the items listed in fzf(eg,glo main.go test.go,gclean output/). gdsupports specifying revision(eg,gd HEAD~,gd v1.0 README.md).- Call
giwith arguments to get the wanted.gitignorecontents directly(eg,gi cmake c++).
MIT (c) Wenxuan Zhang