|
|
||
|---|---|---|
| .github | ||
| forgit.plugin.fish | ||
| forgit.plugin.sh | ||
| forgit.plugin.zsh | ||
| LICENSE | ||
| README.md | ||
forgit
forgit is a utility tool powered by fzf for using git interactively.
Installation
Make sure you have fzf installed.
Try Online
Run the following command in your shell to try forgit without installing:
Bash and ZSH
source <(curl -Ss https://raw.githubusercontent.com/wfxr/forgit/master/forgit.plugin.zsh)
Fish
source (curl -Ss https://raw.githubusercontent.com/wfxr/forgit/master/forgit.plugin.fish | psub)
Installation using a ZSH Plugin manager
Zplug
zplug 'wfxr/forgit'
Zgen
zgen load 'wfxr/forgit'
Antigen
antigen bundle 'wfxr/forgit'
Manual Installation
Download and source forgit.plugin.zsh, forgit.plugin.sh, or forgit.plugin.fish in your shell config.
Commands
ga
Interactive git add selector
glo
Interactive git log viewer
The log graph can be disabled by option FORGIT_LOG_GRAPH_ENABLE (see discuss in issue #71).
gi
Interactive .gitignore generator
gd
Interactive git diff viewer
grh
Interactive git reset HEAD <file> selector
gcf
Interactive git checkout <file> selector
gss
Interactive git stash viewer
gclean
Interactive git clean selector
Default keybinds
| 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 |
Custom options
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=gss
You 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 complete loading order of fzf options is:
FZF_DEFAULT_OPTS(fzf global)FORGIT_FZF_DEFAULT_OPTS(forgit global)FORGIT_CMD_FZF_OPTS(command specific)
Example
// adds a keybind to drop the selected stash but do not quit fzf
FORGIT_STASH_FZF_OPTS='
--bind="ctrl-d:reload(git stash drop $(cut -d: -f1 <<<{}) 1>/dev/null && git stash list)"
'
Optional
-
diff-so-fancyordelta: Improve thegit diffoutput. -
bat: Syntax highlighting forgitignore. -
emoji-cli: Emoji support forgit log.
Tips
- Hit
qto quit from full screen preview any time. - Commands like
glo,gd,gcfandgcleanaccept arguments to restrain the items listed in fzf(eg,glo develop,glo f738479..188a849b -- main.go,gclean output/etc.). gdsupports specifying revision(eg,gd HEAD~,gd v1.0 README.md).- Call
giwith arguments to get the wanted.gitignorecontents directly(eg,gi cmake c++).
License
MIT (c) Wenxuan Zhang


