Skip to content
KevinYouuPublic

About

๐Ÿš€ Modern interactive Git CLI with beautiful TUI - Streamline commits, branches, tags & merges through one-command workflows. Bilingual (EN/ไธญๆ–‡) | Cross-Platform (Linux/macOS/Windows) | Smart Configuration. ๐Ÿš€ ็ŽฐไปฃๅŒ–ไบคไบ’ๅผ Git CLI ๅทฅๅ…ท - ้€š่ฟ‡ไธ€้”ฎๅทฅไฝœๆต็ฎ€ๅŒ–ๆไบคใ€ๅˆ†ๆ”ฏใ€ๆ ‡็ญพๅ’Œๅˆๅนถๆ“ไฝœใ€‚ๅŒ่ฏญๆ”ฏๆŒ (EN/ไธญๆ–‡) | ่ทจๅนณๅฐ (Linux/macOS/Windows) | ๆ™บ่ƒฝ้…็ฝฎ

Resources

Stars

4 stars

Watchers

2 watching

Forks

Latest commit

ย 

History

258 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

English | ็ฎ€ไฝ“ไธญๆ–‡

easyGit

Release License Go Version Platform

๐Ÿš€ A modern interactive Git CLI that streamlines your daily Git workflow. Make commits, manage branches, handle tags, and more - all through an intuitive terminal interface. Supports Linux/macOS/Windows

This project uses its own features to commit code - dogfooding at its finest!

easyGit Demo

๐Ÿ“– What is easyGit?

easyGit is designed for developers who love Git but want to work faster.

Instead of typing multiple Git commands or remembering complex flags, easyGit provides:

  • โšก One-Command Workflows - Push all changes or select specific files with a single command; no-argument easyGit opens an interactive action menu
  • ๐Ÿ”€ Parallel Multi-Remote Push - pa/ps/tc/td/bd push to multiple remotes concurrently; one failing remote never blocks the others, and the summary lists every failed step
  • ๐ŸŽฏ Interactive Selection - Choose branches, commits, tags, and files through visual menus; press / in any list to filter instantly
  • ๐Ÿง  Remembers Your Choices - Commit types, reset modes, merge strategies, cherry-pick options, and recent commit messages (โ†‘/โ†“ in the message input) are remembered across sessions
  • ๐Ÿ”ง Smart Configuration - One-stop config center for language, push preferences (incl. pull-before-push), commit types, tag version cap, theme, and conflict editor
  • ๐ŸŒ Multilingual - Full English and Chinese support with auto-detection
  • ๐ŸŽจ Beautiful Interface - Clear visual feedback with modern TUI components; full-width divider lines frame every screen, and a โฏ indicator follows your cursor across all selection lists
  • ๐Ÿ“ Responsive Layout - Tables, forms, and progress bars adapt to terminal size; wide screens are fully utilized, narrow screens never overflow
  • โŒจ๏ธ Unified Help Bar - Every screen shows a single-line shortcut bar with [Key] prefix and action text, inline option descriptions (bright name + muted detail), auto-hidden on tiny terminals
  • ๐Ÿ’ป Cross-Platform - Works seamlessly on Linux, macOS, and Windows

๐Ÿ“– Design Philosophy

easyGit is a Git workflow enhancement tool, not a replacement for Git commands.

We focus on:

  • ๐ŸŽฏ Integrating multi-step workflows - Combining multiple Git commands into one interactive flow
  • ๐Ÿง  Simplifying complex commands - Providing friendly UIs for hard-to-remember parameters
  • ๐Ÿš€ Optimizing repetitive work - Batch operations and smart defaults
  • โœจ Enhancing user experience - Beautiful TUI with clear visual feedback

๐Ÿ“š Read more: Design Philosophy | ่ฎพ่ฎกๅ“ฒๅญฆ (ไธญๆ–‡)


โšก Why easyGit?

easyGit vs Native Git

See how much time you can save with easyGit:

Operation Native Git easyGit Time Saved
Commit all changes git add .
git commit -m "msg"
git push
easyGit pa ~75%
Delete remote branch git push origin --delete branch-name easyGit bd (interactive) ~60%
Create & push tag git tag v1.0.0
git push origin v1.0.0
easyGit tc (with wizard) ~70%
Merge feature branch git checkout main
git merge feature
git push
easyGit m (interactive) ~65%
Rebase branch git branch (find name)
git rebase <branch>
easyGit r (visual selector) ~60%
Cherry-pick commit git log (find hash)
git cherry-pick <hash>
git push
easyGit cp (visual selector) ~70%
Squash commits git rebase -i (manual edit) easyGit sq (visual multi-select) ~70%
Drop commits git rebase -i (manual delete) easyGit d (visual multi-select) ~75%

Benefits:

  • ๐ŸŽฏ Interactive Selection - No need to remember branch names, commit hashes, or tag names
  • ๐Ÿ”„ Workflow Integration - Multiple Git commands combined into one
  • ๐Ÿ’ก Smart Defaults - Remembers your preferences (remote, branch, language)
  • โœ… Error Prevention - Visual confirmation before destructive operations

๐Ÿ“ฆ Installation

Prerequisites

  • Git must be installed on your system

System Requirements

  • Operating System: Linux / macOS / Windows 10+
  • Git Version: 2.0+
  • Terminal: Modern terminal with ANSI color support
  • Disk Space: < 10MB

Quick Install (Recommended)

Linux / macOS:

# Using curl
curl -sSL https://raw.githubusercontent.com/KevinYouu/easyGit/main/install.sh | bash

# Or using wget
wget -qO- https://raw.githubusercontent.com/KevinYouu/easyGit/main/install.sh | bash

Windows:

# Using PowerShell
iwr -useb https://raw.githubusercontent.com/KevinYouu/easyGit/main/install.ps1 | iex

Build from Source

Works on all platforms with Go installed:

git clone https://github.com/KevinYouu/easyGit.git
cd easyGit
./build.sh

Verify Installation

After installation, verify that easyGit is working correctly:

# Check if easyGit is installed
easyGit version

# Expected output:
# easyGit version x.x.x
# Built with Go 1.21+

# Try a simple command
easyGit --help

If you encounter any issues, see the FAQ section.


๐Ÿš€ Quick Start

Basic Usage

# No arguments? Open the interactive action menu (press Enter on a command)
easyGit

# Push all changes in the working directory
easyGit push-all  # or: easyGit pa

# Push selected files in the working directory (status column M/A/D shown)
easyGit push-selected  # or: easyGit ps

# Initialize easyGit configuration (usually auto-initialized on first run)
easyGit init

๐Ÿ’ก Tips: In any selection list (commits, branches, tags, files) press / to filter by text. In the commit message input, press โ†‘/โ†“ to reuse one of your last 10 messages.

Advanced Operations

# Create and push a tag
easyGit tag-create  # or: easyGit tc

# Delete a tag
easyGit tag-delete  # or: easyGit td

# Delete local or remote branches
easyGit branch-delete  # or: easyGit bd

# Switch branches interactively (dirty workdir offers carry-over / auto-stash)
easyGit branch-switch  # or: easyGit sw

# Create a branch, optionally push with upstream
easyGit branch-create  # or: easyGit bc

# Manage stashes (save / browse / apply / drop / clear)
easyGit stash  # or: easyGit st

# Amend the last commit (message / append files, safe force-push guidance)
easyGit amend  # or: easyGit am

# Undo: restore HEAD to a previous checkpoint via reflog
easyGit undo  # or: easyGit un

# Merge selected branch into current branch
# Conflicts open an in-tool resolution loop (edit โ†’ continue/abort)
easyGit merge  # or: easyGit m

# Rebase current branch onto another
# Conflicts open an in-tool resolution loop (edit โ†’ continue/skip/abort)
easyGit rebase  # or: easyGit r

# Cherry-pick commits
# Conflicts open the same resolution loop; batch stops gracefully on abort
easyGit cherry-pick  # or: easyGit cp

# Reset to selected commit
easyGit reset  # or: easyGit rs

# Squash contiguous commits into one (message keeps all original text, editable multi-line)
easyGit squash  # or: easyGit sq

# Drop/Delete specific commits
easyGit drop  # or: easyGit d

# Configure easyGit (language, theme, push settings incl. pull-before-push, commit types, tag version cap)
easyGit config

# Update easyGit
easyGit update

Theme (Light/Dark)

  • Auto (default): detects the terminal background (OSC 11 query) on startup; falls back to dark when the query is unsupported or in non-TTY environments.
  • Manual: force a mode with the --theme flag (runtime, highest priority) or persist a preference via the config center.
# One-time override (runtime priority)
easyGit --theme light push-all

# Persist a preference (takes effect on next startup)
easyGit config   # โ†’ Interface Theme โ†’ Auto / Dark / Light

Priority: --theme flag > config center setting > auto-detect.

๐Ÿ“– Command Reference

Daily Operations

Command Alias Description Use Case
push-all pa Stage & commit all changes (optional body; pushes directly when nothing to commit) Quick commits for all modifications
push-selected ps Interactively select files to stage & commit (optional body) Fine-grained control over what to commit
stash st Manage stashes: save / browse / apply / drop Park work-in-progress, rescue interrupted tasks
amend am Amend last commit: message / append files Fix the previous commit without leaving the flow

Branch & Tag Management

Command Alias Description Use Case
merge m Merge selected branch into current branch Integrate feature branches
branch-switch sw Switch branches interactively (local + remote) Move between branches; remote auto-tracks
branch-create bc Create a branch and optionally push with upstream Start new work from any base point
branch-delete bd Delete local or remote branches (extra confirmation before force-deleting unmerged branches) Clean up merged or obsolete branches
tag-create tc Create and push tags with semantic versioning Release versioning (v1.0.0, v2.1.0, etc.)
tag-delete td Delete tags locally and remotely Remove incorrect or obsolete tags

Advanced Git Operations

Command Alias Description Use Case
rebase r Rebase current branch onto another Keep a linear history
cherry-pick cp Cherry-pick commits from other branches Apply specific commits to current branch
reset rs Reset repository to selected commit Undo commits or move to previous state
undo un Restore HEAD to a reflog checkpoint "Oh no" recovery after a bad operation
clean cl Discard changes & remove untracked files Selective cleanup with full preview
worktree wk Manage git worktrees (add/remove/list) Parallel work on multiple branches
squash sq Squash contiguous commits (keeps all original text) Clean up local commit history (visual)
drop d Delete specific commits Remove unwanted commits from history

Configuration & Utilities

Command Alias Description Use Case
init - Initialize easyGit configuration First-time setup (usually automatic)
config - Open the interactive configuration center Change language, theme, push settings (incl. pull-before-push), commit types, tag version cap, conflict editor
update - Update easyGit to latest version Get new features and bug fixes
version v Show current version information Check installed version

๐Ÿ› ๏ธ Development

Building from Source

# Clone the repository
git clone https://github.com/KevinYouu/easyGit.git
cd easyGit

# Install dependencies
go mod tidy

# Build with version injection
./build.sh

# Or build manually
go build -o easyGit ./cmd/easygit

Running Tests

# Run all tests
go test ./...

# Run specific package tests
go test ./internal/i18n

# Run benchmarks
go test -bench=. ./internal/i18n

Project Structure

easyGit/
โ”œโ”€โ”€ cmd/easygit/          # CLI commands and entry point
โ”‚   โ”œโ”€โ”€ main.go          # Application entry point
โ”‚   โ”œโ”€โ”€ root.go          # Root command setup
โ”‚   โ””โ”€โ”€ commands/        # Individual command implementations
โ”œโ”€โ”€ internal/            # Internal packages
โ”‚   โ”œโ”€โ”€ gitcmd/          # Git operation implementations
โ”‚   โ”œโ”€โ”€ i18n/            # Internationalization
โ”‚   โ”œโ”€โ”€ form/            # TUI form components
โ”‚   โ”œโ”€โ”€ spinner/         # Loading animations
โ”‚   โ”œโ”€โ”€ theme/           # Visual styling
โ”‚   โ””โ”€โ”€ config/          # Configuration management
โ””โ”€โ”€ docs/                # Documentation

๐Ÿ”ง Compatibility

โœ… Fully compatible with native Git workflow โœ… Can be used alongside Git commands โœ… Does not modify .git directory structure โœ… Supports all Git hooks


โ“ FAQ

How is easyGit different from other Git tools?

easyGit focuses on workflow integration rather than replacing individual Git commands. It combines multiple Git operations into interactive flows, making complex tasks simple.

Does easyGit modify my Git repository?

No. easyGit uses standard Git commands under the hood and doesn't modify your .git directory structure. You can safely use it alongside regular Git commands.

Can I use easyGit in CI/CD pipelines?

easyGit is designed for interactive terminal use. For CI/CD, we recommend using standard Git commands.

What if I encounter a bug?

Please open an issue with:

  • Your OS and Git version
  • Steps to reproduce
  • Expected vs actual behavior

How do I verify the installation?

# Check version
easyGit version

# Expected output
easyGit version x.x.x
Built with Go 1.21+

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

Development Guidelines

  • Follow Go conventions and best practices
  • Add tests for new features
  • Update documentation as needed
  • Ensure all commands support both English and Chinese

๐Ÿ“„ License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

Built with these amazing open source projects:

Core Dependencies


Made with โค๏ธ by KevinYouu

About

๐Ÿš€ Modern interactive Git CLI with beautiful TUI - Streamline commits, branches, tags & merges through one-command workflows. Bilingual (EN/ไธญๆ–‡) | Cross-Platform (Linux/macOS/Windows) | Smart Configuration. ๐Ÿš€ ็ŽฐไปฃๅŒ–ไบคไบ’ๅผ Git CLI ๅทฅๅ…ท - ้€š่ฟ‡ไธ€้”ฎๅทฅไฝœๆต็ฎ€ๅŒ–ๆไบคใ€ๅˆ†ๆ”ฏใ€ๆ ‡็ญพๅ’Œๅˆๅนถๆ“ไฝœใ€‚ๅŒ่ฏญๆ”ฏๆŒ (EN/ไธญๆ–‡) | ่ทจๅนณๅฐ (Linux/macOS/Windows) | ๆ™บ่ƒฝ้…็ฝฎ

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages