Skip to content(if available)orjump to list(if available)

Show HN: ggc – A terminal-based Git CLI written in Go

Show HN: ggc – A terminal-based Git CLI written in Go

10 comments

·July 16, 2025

Hi HN,

I built ggc (https://github.com/bmf-san/ggc), a terminal-based Git CLI tool written in Go.

ggc provides: - A fast interactive UI (like `fzf`) for common Git operations

- Traditional subcommands (e.g. `ggc add`, `ggc commit`)

- Git-compatible config support (`ggc config` reads from `git config`)

- Built-in aliases and workflow automation (e.g. `ggc addcommitpush`)

The goal is to improve developer productivity by combining interactive workflows with scriptable CLI operations.

It's still under active development, but I'd love feedback from the community!

GitHub: https://github.com/bmf-san/ggc Demo GIF: https://github.com/bmf-san/ggc#demo

Thanks!

johnisgood

This is not intended to be an insult of any sort, but I am pretty sure the use of LLM to write this was not so moderate, but I have nothing against it, you have a working project. I have done the same with projects similar to this.

I use lazygit (also written in Go) and magit a lot, they are quite nice. For GUI, I use Git Cola.

I wish the demo GIF was something more complex, perhaps adding & removing a particular chunk and committing it or something like that.

JdeBP

The display weirdness (e.g. the Z shell's percent character showing up) that you are seeing in your demo is because you are putting the terminal line discipline into raw mode, raw mode of course does not do CR-before-LF stuffing, and there's some confusion in the code as to when it does and when it does not explicitly emit CRs.

* https://github.com/bmf-san/ggc/blob/9e93ef8a87973cab916e37a9...

* https://github.com/bmf-san/ggc/blob/9e93ef8a87973cab916e37a9...

johnisgood

Where is the "%" showing up? I only see it before he runs ggc. It is common to use "%" instead of "$" in some shells.

In particular, C Shell (csh) and Tcsh uses "%" as the prompt character. Common in BSD systems.

Of course you can customize Zsh (or Bash) to show "%", too.

Edit: never mind, I noticed it when he quit "ggc". My bad. :)

awestroke

A terminal based CLI? As opposed to what?

osigurdson

I think they mean it is an interactive type terminal program (vs "one shot" as the git cli itself).

null

[deleted]

nikolayasdf123

> Requirement: git command must be installed

holdup... is this just a wrapper around git?

nikolayasdf123

> cmd := c.execCommand("git", "branch", "--format", "%(refname:short)")

oh my god. you have just wrapped standard git CLI. well, this is dissapointing.

williamdclt

Not sure what you expected? That's the case for all git clients (is there any using libgit?) and almost certainly the right thing to do

trwhite

I’m not sure I see from your example why? You’d expect any git client to have branch.