β οΈ This repository contains the original Bun + TypeScript implementation of Git Tools.The next generation of the project is being rebuilt in Go under Kairos.
Kairos is designed as a modular version control workflow platform where Git becomes a plugin rather than a hard dependency.
The long-term goal is to support multiple VCS backends and workflows.
The rewrite focuses on:
- single-binary distribution
- modular command architecture
- provider-based VCS integrations
- improved performance
- cleaner extensibility
Experimental work may still appear in the
V2-betabranch during the migration but not assured, it will be more of a kitchen sink but it's still in.ts.Contributions are welcome β please keep PRs focused on individual command ports or provider integrations.
With love, Meoli β€οΈ
Custom Git tools built with TypeScript and compiled to native executables using Bun.
A powerful tool to view Git logs based on author and time range with a clean, easy-to-read interface.
git who [author_name] [--t] [--T]Features:
- View logs for the current user (default) or a specified author
- Interactive contributor selection with
--tflag - Interactive time range selection with
--Tflag - Displays commit details in a formatted table
A simple tool to fetch and display Git labels from repositories.
git labels <repo-name>Features:
- List labels from the current repository or a remote repository
- Displays labels in a clean, formatted table
- Fetches labels directly without needing to clone repositories
An interactive tool for creating GitHub pull requests with ease.
git pr [--preview]Features:
- Interactive prompts for PR title and body
- Fetches and displays repository collaborators for assignee selection
- Fetches and displays repository labels for multi-selection
- Interactive branch selection for base and head branches
- Preview mode to review the PR command before execution
- Uses the GitHub CLI (gh) for API access and PR creation
- Git
- GitHub CLI (optional, recommended)
- Bun (will be installed by the installer if not present)
# Clone the repository
git clone https://github.com/yourusername/git-tools.git
cd git-tools
# Run the installation script
chmod +x install.sh
./install.shThe installer will:
- Check and install GitHub CLI (if you choose to)
- Install Bun if it's not already installed
- Install required dependencies
- Build the TypeScript code into native executables
- Install the executables to the tmp directory in your repository
- Set up Git aliases with proper help handling
# Show logs for current user in the last week
git who
# Show logs for a specific author
git who "Jane Doe"
# Interactive mode to select an author
git who --t
# Interactive mode to select both author and time range
git who --t --T
# Show help
git who --help# List labels from the current repository
git labels .
# List labels from a remote repository
git labels https://github.com/user/repo.git
# Show help
git labels --help# Create a PR with interactive prompts
git pr
# Create a PR with command preview
git pr --preview
# Show help
git pr --helpFor full documentation, you can install the man pages:
chmod +x install-man-pages.sh
./install-man-pages.shAfter installing the man pages, you can access them with:
man git-who
man git-labels
man git-pr# Install dependencies
bun install# Run in development mode
bun run dev:who
bun run dev:labels
bun run dev:pr
# Build tools
bun run build.
βββ install.sh # Main installation script
βββ install-man-pages.sh # Man pages installation script
βββ who.ts # Source for git-who tool
βββ labels.ts # Source for git-labels tool
βββ pr.ts # Source for git-pr tool
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
βββ git-who.1 # Man page for git-who
βββ git-labels.1 # Man page for git-labels
βββ git-pr.1 # Man page for git-pr
βββ tmp/ # Directory for compiled binaries
To update to the latest version:
# Pull the latest changes
git pull
# Run the installation script again
./install.shIf you encounter this issue when running git who --help, there are two solutions:
-
Install the man pages (recommended):
./install-man-pages.sh
-
Reinstall with the latest script: The latest installation script sets up aliases that handle help flags correctly.
If you get permission errors when running the tools:
chmod +x tmp/who tmp/labels tmp/prAn interactive Git tag creation tool that simplifies the process of creating and managing Git tags.
- Interactive version selection
- Automatic version suggestion
- Descriptive tag messages
- Tag creation confirmation
- Comprehensive tag display
- Bun runtime
- Git
- Node.js (for npm packages)
# Clone the repository
git clone <your-repo-url>
cd <repo-directory>
# Install dependencies
bun install
# Run installation script
chmod +x install.sh
sudo ./install.sh# Install dependencies
bun install inquirer chalk ora cli-table3
# Copy script to bin directory
sudo cp tag.ts /usr/local/bin/git-tag
sudo chmod +x /usr/local/bin/git-tag
# Install man page
sudo cp git-tag.1 /usr/share/man/man1/
sudo gzip /usr/share/man/man1/git-tag.1# Run uninstall script
sudo ./uninstall.sh
# Or manually remove
sudo rm /usr/local/bin/git-tag
sudo rm /usr/share/man/man1/git-tag.1.gzSimply run:
git tagFollow the interactive prompts to create a new tag.
To uninstall the scripts just edit your .gitconfig file
nvim ~/.gitconfigContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feature: Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Bun for the amazing runtime and build tools
- Inquirer.js for interactive prompts
- cli-table3 for formatted tables
- ora for elegant terminal spinners