Hacker News new | past | comments | ask | show | jobs | submit login
Forgit: A utility tool powered by fzf for using Git interactively (github.com/wfxr)
99 points by kdheepak on May 17, 2022 | hide | past | favorite | 24 comments



If anyone cares, I do something similar with my git aliases: https://github.com/kbd/setup/blob/master/HOME/.config/git/co...

So, "ga" similarly gives a fuzzy finder of files to "git add" that are actually in git status, "gcp" lets me cherry pick one or more commits from a branch where both the branch and commits are picked with fzf, and so on.


Aliases are awesome, I use "git config --global alias.pwd 'symbolic-ref --short HEAD'" for easier management of branches. Instead of "git push -u origin really-long-branch-name", I can just do "git push $(git pwd)".


Here’s what I do for that (aliased to ‘p’): https://github.com/kbd/setup/blob/d95653da5ab367b1e628b97537...


Have you published those tools? I don't find anything relevant via Googling nor searching your repos.


What tools? That's a git config file.


`ga` and `gcp`. Are those part of git?


The only part I left out is that as part of my shell config I automatically alias all my short git aliases (as well as a few special cases). So “gcp” -> “git cp” etc.

https://github.com/kbd/setup/blob/d95653da5ab367b1e628b97537...


I assumed those were aliases for `git a` and `git cp` which are in the config file.


No, they're not in the config file.

`gcp` and `ga` are part of forgit, not OPs config. That's why searching the repo didn't find anything. From the phrasing, I thought they were part of OPs repo.

`gcp` https://github.com/wfxr/forgit/search?q=gcp

`ga` https://github.com/wfxr/forgit/search?q=ga



I use Tig [0] and highly recommend it. I do cherry picks there view blames, git greps, among other things.

[0]: https://jonas.github.io/tig/


Nice. I do something similar with simple scripts for fuzzy finding a file/sha, and then call them in place of one being expected, but this might tempt me to let someone else maintain it (with undoubtedly more thought and time put into it by a long shot) instead :)

https://github.com/OJFord/fzutils

I dislike all the short acronym-style aliases though; (I know it's fairly popular with git) not immediately obvious if it's supported to just use the usual commands.


This is awesome although I solve these problems a different way for my workflow. If I really need to dive into git I use Tower. For adding to a commit, I basically never need to add anything less than everything. In 1 step I add everything and commit with a message without needing quotes:

  # git config
  alias.add-commit !git add -A && git commit

  # .bash_profile
  # Use like: gac this is my commit message
  function gac ()
  {
     git add-commit -m "$*" 
  }


That's one crazy fancy ui for a terminal app.


That UI is beautiful! What's their special sauce?


A nice Terminal color theme and a good font with PowerLine symbols.


Which UI toolkit?


Skimming the code, it's a shell script so it is mostly bespoke and much of it just git's built-in color formatting! Also presumably some of it is fzf's UI, too. There's an even less documented helper ruby app called "emojify" from the same author that I couldn't quite figure out what it does, given the name I assume it converts something to emojis, but what and where I didn't ascertain in a brief skim.

(ETA: There's some confusion here too, because some of those screenshots is a likely unrelated "status bar" tool and a Starship-like prompt. Might even be Starship.)


* TUI, aka Text UI


Guy works at bytedance (creators of TikTok, and notoriously known for making use of intrusive telemetry), hasn't released source code, hence I can't trust this application.


Isn’t it an irony that he open sourced his application yet you don’t trust him? Is it because he is from a Chinese origin, too closely flying around being a racist. By that logic we cant trust React, RocksDB and other libraries from Facebook, which has done equal or even more shady stuff.


I missed the fact that he released the source.


this is nice with the TUI, but need to remember these shortcut commands, maybe will get used to or remember them after start using them...


you could create a bash function that echo's out the aliases, or perhaps feed it a keyword and it greps the commands and only gives you the ones you need.

something like:

    fgit(){
      fgcommands = "git commit...\n,git rebase...\n" 
      # you want one per line, so I'm not perfect at bash, w/out looking up how to do it I think you could cat it into the commands. 
      if [ -z $1 ]; then
        echo "$fgcommands"
        # returns all commands
      else
        echo "$fgcommands" | grep commit"
        # returns all commands with commit in. 
      fi
    }
You could even have more fun w/ it by creating some script that maybe remaps all your git commands so whenever you manually do git commit <flags> -- it'd run the command then also convert your command to a string, and run each word matching like commit, rebase, etc through fgit, and create some sort of "you could've done this instead"... I'd love if zsh had more things like that, but I only recently switched to zsh and oh-my-zsh is it so much better.

Think of this like in vscode when you use the command search, and it shows the keybindings next to it, so you can learn to do it better...




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: