Fzf Git.sh Save

bash and zsh key bindings for Git objects, powered by fzf

Project README

fzf-git.sh

bash and zsh key bindings for Git objects, powered by fzf.

image

Each binding will allow you to browse through Git objects of a certain type, and select the objects you want to paste to your command-line.

Installation

  1. Install the latest version of fzf (including fzf-tmux)
    • (Optional) Install bat for syntax-highlighted file previews
  2. Source fzf-git.sh file from your .bashrc or .zshrc

Usage

List of bindings

  • CTRL-GCTRL-F for Files
  • CTRL-GCTRL-B for Branches
  • CTRL-GCTRL-T for Tags
  • CTRL-GCTRL-R for Remotes
  • CTRL-GCTRL-H for commit Hashes
  • CTRL-GCTRL-S for Stashes
  • CTRL-GCTRL-L for reflogs
  • CTRL-GCTRL-W for Worktrees
  • CTRL-GCTRL-E for Each ref (git for-each-ref)

[!WARNING] You may have issues with these bindings in the following cases:

  • CTRL-GCTRL-B will not work if CTRL-B is used as the tmux prefix
  • CTRL-GCTRL-S will not work if flow control is enabled, CTRL-S will freeze the terminal instead
    • (stty -ixon will disable it)

To workaround the problems, you can use CTRL-G{key} instead of CTRL-GCTRL-{KEY}.

[!WARNING] If zsh's KEYTIMEOUT is too small (e.g. 1), you may not be able to hit two keys in time.

Inside fzf

  • TAB or SHIFT-TAB to select multiple objects
  • CTRL-/ to change preview window layout
  • CTRL-O to open the object in the web browser (in GitHub URL scheme)

Customization

# Redefine this function to change the options
_fzf_git_fzf() {
  fzf-tmux -p80%,60% -- \
    --layout=reverse --multi --height=50% --min-height=20 --border \
    --border-label-pos=2 \
    --color='header:italic:underline,label:blue' \
    --preview-window='right,50%,border-left' \
    --bind='ctrl-/:change-preview-window(down,50%,border-top|hidden|)' "$@"
}

Defining shortcut commands

Each binding is backed by _fzf_git_* function so you can do something like this in your shell configuration file.

gco() {
  _fzf_git_each_ref --no-multi | xargs git checkout
}

gswt() {
  cd "$(_fzf_git_worktrees --no-multi)"
}
Open Source Agenda is not affiliated with "Fzf Git.sh" Project. README Source: junegunn/fzf-git.sh
Stars
384
Open Issues
5
Last Commit
2 weeks ago
Repository
Tags

Open Source Agenda Badge

Open Source Agenda Rating