A powerful, beautiful, and feature-rich command-line interface for Git and GitHub operations
Created by Ritankar Saha
GitHubber is a comprehensive CLI tool that supercharges your Git and GitHub workflow with:
- Repository Management: Initialize, clone, and manage repositories
- Branch Operations: Create, delete, switch, and list branches
- Commit Management: Stage files, create commits, and view history
- Remote Operations: Push, pull, and fetch from remote repositories
- Advanced Features: Interactive commit squashing, stash management, tag operations
- Repository Information: View detailed GitHub repository stats
- Pull Request Management: Create and manage pull requests directly from CLI
- Issue Tracking: List and view GitHub issues
- Authentication: Secure token-based authentication
- Colored Output: Syntax-highlighted, colorful terminal interface
- Interactive Menus: Easy-to-navigate menu-driven interface
- Professional Styling: Clean, modern design with emojis and icons
- Customizable Themes: Dark, light, and auto themes
- User Preferences: Customizable UI themes and preferences
- Token Management: Secure GitHub token storage
- Default Settings: Set default repositories and workflows
- Go 1.23 or higher
- Git installed and configured
- GitHub account (for GitHub features)
# Clone the repository
git clone https://github.com/ritankarsaha/GitHubber.git
cd GitHubber
# Build the application
go build -o githubber ./cmd/main.go
# Install globally (optional)
sudo mv githubber /usr/local/bin/
go install github.com/ritankarsaha/GitHubber/cmd/main.go@latest
To use GitHub features, you need to authenticate:
export GITHUB_TOKEN="your_github_personal_access_token"
- Run
githubber
- Select "Settings" from the menu
- Choose "Set GitHub token"
- Enter your personal access token
How to create a GitHub Personal Access Token:
- Go to GitHub β Settings β Developer settings β Personal access tokens
- Click "Generate new token (classic)"
- Select scopes:
repo
,read:user
,read:org
- Copy the generated token
# Navigate to any Git repository
cd /path/to/your/repository
# Launch GitHubber
githubber
- Initialize Repository: Create a new Git repository
- Clone Repository: Clone a repository from URL
- Create Branch: Create and switch to a new branch
- Delete Branch: Delete local branches
- Switch Branch: Switch between existing branches
- List Branches: View all available branches
- View Status: Check repository status
- Add Files: Stage files for commit
- Commit Changes: Create commits with messages
- Push Changes: Push commits to remote repository
- Pull Changes: Pull updates from remote
- Fetch Updates: Fetch without merging
- View Log: Display commit history
- View Diff: Show file differences
- Squash Commits: Interactive commit squashing
- Stash Save: Save current changes to stash
- Stash Pop: Apply stashed changes
- List Stashes: View all stashes
- Create Tag: Create annotated tags
- Delete Tag: Remove tags
- List Tags: View all tags
- View Repository Info: Display GitHub repository statistics
- Create Pull Request: Create PRs directly from CLI
- List Issues: View repository issues
- View Settings: Display current configuration
- GitHub Authentication: Manage GitHub tokens
- UI Preferences: Customize themes and display options
GitHubber/
βββ cmd/
β βββ main.go # Application entry point
βββ internal/
β βββ cli/ # CLI interface components
β β βββ input.go # User input handling
β β βββ menu.go # Menu system and handlers
β βββ git/ # Git operations
β β βββ commands.go # Core Git commands
β β βββ squash.go # Commit squashing functionality
β β βββ utils.go # Git utilities
β β βββ test_helpers.go # Testing utilities
β βββ github/ # GitHub API integration
β β βββ client.go # GitHub API client
β βββ config/ # Configuration management
β β βββ config.go # Settings and preferences
β βββ ui/ # Terminal UI styling
β βββ styles.go # Styling and themes
βββ tests/ # Test files and fixtures
βββ docs/ # Documentation
βββ scripts/ # Utility scripts
βββ examples/ # Usage examples
βββ go.mod # Go module definition
βββ go.sum # Go module checksums
βββ README.md # This file
GitHubber supports multiple color themes:
- Dark Theme (default): Optimized for dark terminals
- Light Theme: For light terminal backgrounds
- Auto Theme: Automatically detects terminal theme
Configuration is stored in ~/.githubber/githubber.json
:
{
"github": {
"default_owner": "your-username",
"default_repo": "your-repo",
"api_base_url": "https://api.github.com"
},
"ui": {
"theme": "dark",
"show_emojis": true,
"page_size": 20,
"border_style": "rounded"
},
"git": {
"default_branch": "main",
"auto_push": false,
"sign_commits": false
}
}
GitHubber provides an intuitive interface for squashing commits:
- Ensures working directory is clean
- Shows recent commits with hashes and messages
- Prompts for base commit and new commit message
- Handles the rebase automatically
- Automatically detects repository from Git remote
- Parses both HTTPS and SSH repository URLs
- Provides detailed repository statistics
- Creates pull requests with current branch
- Comprehensive error messages with helpful suggestions
- Graceful handling of authentication issues
- Validation of Git repository state before operations
Run the comprehensive test suite:
# Run all tests
go test ./...
# Run tests with coverage
go test -v -cover ./...
# Run specific package tests
go test ./internal/git/
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and add tests
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow Go best practices and conventions
- Add tests for new functionality
- Update documentation for new features
- Use meaningful commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
Ritankar Saha
- Email: ritankar.saha786@gmail.com
- GitHub: @ritankarsaha
- Charm Bracelet for the amazing Lipgloss library
- Google for the go-github library
- The Go community for excellent tooling and libraries
GitHubber is actively maintained and under continuous development. Current version: v2.0.0
- β Complete UI overhaul with beautiful styling
- β GitHub API integration
- β Configuration system
- β Enhanced error handling
- π GitHub Actions integration (coming soon)
- π Plugin system (planned)
β If you find GitHubber useful, please give it a star on GitHub! β