Improving the Git CLI experience with fzf
Improving the Git CLI experience with fzf
What is this?
Rather than needing to remember the exact name of the branch, tag or remote, or the exact syntax of the different git commands needed, git-gopher will provide a list to choose from.
fzf for these lists, finding and choosing which item can be done by fuzzy searching the text.
And unlike the git GUIs out there, git-gopher will say exactly what it's doing by displaying the command it will run before the selection is made.
What is this not?
At present, git-gopher is not meant as a comprehensive git solution to include everything you'd ever want to do. Rather, it looks to streamline typical use-cases in a friendly, convenient manner, and allow custom additions to suit personal edge-cases.
The following must be installed
Make sure the basic build tools are installed
pip3 install setuptools wheel
Then we can install via pip
pip3 install git_gopher
$PATH should contain the pip bin directory. That would look something like this in
.zshrc or equivalent
Updating to the latest version is also done via
pip3 install --no-cache-dir --upgrade git-gopher
git-gopher is run from the command line, same as
git. The commands will be standard git commands, as if running them directly in the current working directory.
ggo command with no arguments will bring up a fzf list of all the commands that git-gopher provides, as well as additional standard git commands.
Custom commands can be added to menu by creating
~/ggo-options.dat with the options listed in it, one per line, with the command, shortcut, and description separated by
Note: Commands cannot contain 2 consecutive spaces (
git log: good,
git log: bad). The options are formatted into
columns and the two spaces are how the command column is delimited.
git dosomething | shortcut | Description of my command git dosomethingelse | shortcut2 | Description of my other command
There are several commands added to make use of
fzf and make interacting with basic git commands faster and easier.
Commands will list out the available branches or tags in
fzf as a fuzzy searchable menu rather than requiring that they be provided up front.
Run any command or alias by passing it to the
For commands that support multiple selections, use
SHIFT+TAB to mark each option.
|menu||Open menu with these and other commands|
|checkout-branch||c||Checkout a local branch|
|checkout-branch-remote||cr||Checkout a local or remote branch|
|checkout-tag||ct||Checkout a tag|
|branch-branch||bb||Create and checkout a new branch from another branch|
|branch-tag||bt||Create and checkout a new branch from a tag|
|merge-branch||m||Merge a branch into the current branch|
|merge-tag||mt||Merge a tag into the current branch|
|merge-squash||ms||Merge and squash a branch into the current branch|
|add||a||Track and stage selected files|
|fetch||f||Retrieve repo information from selected remote|
|track-remote||tr||Change which remote upstream to track|
|upstream-push||up||Push the current branch to remote, setting the upstream|
|push-tag||pt||Push a tag to a remote|
|tag-increment-version||tiv||Create a new tag, incremented by major, minor or patch|
|delete-branch||d||Delete a branch|
|delete-branch-force||df||Force delete a branch|
|delete-tag||dt||Delete a tag locally|
|delete-tag-remote||dtr||Delete a tag both locally and on remote|
|reset||rs||Unstage changes after the selected commit|
|reset-hard||rsh||Revert to the selected commit, discarding changes|
|cherry-pick||cp||Merge specific commits into the current branch|
|diff-commits||di||Select two commits and show the changes between them|
|difftool-commits||dit||Select two commits and show the changes using difftool|
|difftool-commits-dir-diff||dd||Select two commits and show the changed files by directory|
|history||h||Show the history of commands run|
|history-dir||hd||Show the history of commands run in the current working directory|
|stash-apply||sta||Apply the selected stash to the current branch|
|stash-pop||stp||Apply the selected stash to the current branch and delete the stash|
|stash-message||stm||Stash changes with a message|
|stash-drop||std||Delete a stash|
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size git_gopher-0.5.3.tar.gz (20.4 kB)||File type Source||Python version None||Upload date||Hashes View hashes|