Package: git-gopher
git-gopherImproving the Git CLI experience with fzfWhat 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-gopherwill provide a list to choose from.By usingfzffor these lists, finding and choosing which item can be done by fuzzy searching the text.And unlike the git GUIs out there,git-gopherwill 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-gopheris 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.RequirementsThe following must be installedPython 3.5+gitfzfInstallationMake sure the basic build tools are installedpip3 install setuptools wheelThen we can install via pippip3 install git_gopherAlso,$PATHshould contain the pip bin directory. That would look something like this in.bashrc,.zshrcor equivalentPATH="$PATH:~/.local/bin"UpdatingUpdating to the latest version is also done viapippip3 install --no-cache-dir --upgrade git-gopherUsagegit-gopheris run from the command line, same asgit. The commands will be standard git commands, as if running them directly in the current working directory.MenuTheggocommand 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.datwith 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 intocolumnsand the two spaces are how the command column is delimited.git dosomething      | shortcut  | Description of my command
git dosomethingelse  | shortcut2 | Description of my other commandIndividual commandsThere are several commands added to make use offzfand make interacting with basic git commands faster and easier.Commands will list out the available branches or tags infzfas a fuzzy searchable menu rather than requiring that they be provided up front.Run any command or alias by passing it to theggocommandFor commands that support multiple selections, useSHIFT+TABto mark each option.ggo [command|alias]commandaliasdescriptionmenuOpen menu with these and other commandscheckout-branchcCheckout a local branchcheckout-branch-remotecrCheckout a local or remote branchcheckout-tagctCheckout a tagbranch-branchbbCreate and checkout a new branch from another branchbranch-tagbtCreate and checkout a new branch from a tagmerge-branchmMerge a branch into the current branchmerge-tagmtMerge a tag into the current branchmerge-squashmsMerge and squash a branch into the current branchaddaTrack and stage selected filesfetchfRetrieve repo information from selected remotetrack-remotetrChange which remote upstream to trackupstream-pushupPush the current branch to remote, setting the upstreampush-tagptPush a tag to a remotetag-increment-versiontivCreate a new tag, incremented by major, minor or patchdelete-branchdDelete a branchdelete-branch-forcedfForce delete a branchdelete-tagdtDelete a tag locallydelete-tag-remotedtrDelete a tag both locally and on remoteresetrsUnstage changes after the selected commitreset-hardrshRevert to the selected commit, discarding changescherry-pickcpMerge specific commits into the current branchdiff-commitsdiSelect two commits and show the changes between themdifftool-commitsditSelect two commits and show the changes using difftooldifftool-commits-dir-diffddSelect two commits and show the changed files by directoryhistoryhShow the history of commands runhistory-dirhdShow the history of commands run in the current working directorystash-applystaApply the selected stash to the current branchstash-popstpApply the selected stash to the current branch and delete the stashstash-messagestmStash changes with a messagestash-dropstdDelete a stash