██┐ ██┐
└─┘ ██┐ ██│
██████┐ ██┐ ██████┐ ██████┐
██┌─██│ ██│ └─██┌─┘ ██┌─██│
██│ ██│ ██│ ██│ ██│ ██│
██████│ ██│ ████┐ ██│ ██│
└───██│ └─┘ └───┘ └─┘ └─┘
██│ A TUI git helper
██████│ with catppuccin theme,
└─────┘ written in Go
|
|
[!WARNING]
Still in development

Catppuccin flavors preview

More Images

For the terminal customization / starship config, check out my ubuntu customization blog article.
This is the full setup, for only starship scroll down to the starship section.
Installation
[!NOTE]
If you don't have Go installed, check out the gith project page,
Go installation is included there.
Install directly using Go
go install github.com/a3chron/gith@latest
After the installation finished, just run:
gith
Customization
You can set your preferred flavor and accent in the Options.
Just run gith and select "Options".
When running gith the first time, a config file storing your settings will be created at
XDG_CONFIG_HOME/gith/config.json if XDG_CONFIG_HOME is set,
otherwise at ~/.config/gith/config.json.
You can also manually edit the config file, although editing with gith ensures that no invalid configurations are used.
What is and what will work
-
Branch
-
Status
- View working tree status (Modified, Added, Deleted, Untracked files)
-
Commit
-
Undo Last Commit
-
Commit staged changes
-
Commit all changes
-
Amend last commit
-
Tag
-
List Tags (shows 10 latest, sorted by semantic versioning)
-
Remove Tag
-
Push Tag (prompts to confirm pusing the latest tag)
-
Add Tag
-
Remote
-
List Remotes
-
Add Remote
-
Remove Remote
-
Update Remote url
-
Push to remote
-
Pull from remote
-
Changes
-
Options
-
Change UI flavor
-
Change UI accent color
Local Development
Build using:
go build -o gith
Then run with:
./gith
built using BubbleTea, design heavily based on opencode
TODO
-
get latest tag in utils version, in add tag show current latest tag
-
add loading states when fetching sth
-
improve remove tag only show n latest tags wiht "pagination" instead of optional show all
-
add confirmation for things like force branch delete
-
adjust version info for small terminals
-
"remove remote" add dimmed remote url in selection
-
clarify "out, err := git.GetRemotes(); m.Err = out" logic, siwth these two