[!INFO]
Iβm currently working on V2 of this project.
The new version will be written in Go to avoid having multiple binaries for each command entry.To access the beta versions, keep an eye on the
V2-betabranch.If youβd like to help with the V2 porting, please create a separate PR for each ported command and follow the new project structure.
With love, Shad β€οΈ
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