{"id":30516187,"url":"https://github.com/simeg/git-x","last_synced_at":"2025-08-26T09:38:35.029Z","repository":{"id":306664971,"uuid":"1026586290","full_name":"simeg/git-x","owner":"simeg","description":"✨ CLI extensions for Git that simplify common workflows","archived":false,"fork":false,"pushed_at":"2025-08-24T13:08:55.000Z","size":3577,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-24T16:45:42.065Z","etag":null,"topics":["git","git-extension","git-extenstions"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simeg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-26T07:23:20.000Z","updated_at":"2025-08-24T13:09:13.000Z","dependencies_parsed_at":"2025-08-24T12:24:36.656Z","dependency_job_id":null,"html_url":"https://github.com/simeg/git-x","commit_stats":null,"previous_names":["simeg/git-x"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/simeg/git-x","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simeg%2Fgit-x","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simeg%2Fgit-x/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simeg%2Fgit-x/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simeg%2Fgit-x/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simeg","download_url":"https://codeload.github.com/simeg/git-x/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simeg%2Fgit-x/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272206726,"owners_count":24891950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","git-extension","git-extenstions"],"created_at":"2025-08-26T09:38:31.660Z","updated_at":"2025-08-26T09:38:35.012Z","avatar_url":"https://github.com/simeg.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 git-x – Superpowers for Git [![CI](https://github.com/simeg/git-x/actions/workflows/ci.yaml/badge.svg)](https://github.com/simeg/git-x/actions/workflows/ci.yaml)\n\n**`git-x`** is a collection of smarter, faster, and more intuitive Git subcommands built to make your daily workflow suck less.\n\nIt wraps common Git actions in muscle-memory-friendly, no-brainer commands — perfect for solo developers, team leads, and anyone tired of typing `git log --oneline --graph --decorate --all` for the 400th time.\n\n![Banner](banner.png)\n\n---\n\n## 📚 Table of Contents\n\n- [Why Does This Exist?](#why-does-this-exist)\n- [Installation](#installation)\n- [Example Commands](#example-commands)\n    - [Repository Information \u0026 Analysis](#repository-information--analysis)\n        - [`info`](#info) - High-level repository overview\n        - [`health`](#health) - Repository health check\n        - [`summary`](#summary) - Commit summary and stats\n        - [`contributors`](#contributors) - Contributor statistics\n        - [`technical-debt`](#technical-debt) - Code complexity analysis\n        - [`large-files`](#large-files) - Find largest files\n    - [Branch Management](#branch-management)\n        - [`new`](#new) - Create and switch to new branch\n        - [`rename-branch`](#rename-branch) - Rename current branch\n        - [`switch-recent`](#switch-recent) - Interactive branch picker\n        - [`clean-branches`](#clean-branches) - Delete all merged branches\n        - [`prune-branches`](#prune-branches) - Delete branches merged into current\n        - [`upstream`](#upstream) - Manage upstream relationships\n    - [Commit History \u0026 Visualization](#commit-history--visualization)\n        - [`graph`](#graph) - Pretty commit graph\n        - [`color-graph`](#color-graph) - Colorized commit graph\n        - [`since [ref]`](#since-ref) - Show commits since reference\n        - [`what [branch]`](#what-branch) - Compare branches\n    - [Commit Operations](#commit-operations)\n        - [`fixup`](#fixup) - Create fixup commits\n        - [`undo`](#undo) - Undo last commit safely\n        - [`bisect`](#bisect) - Simplified bisect workflow\n    - [Stash Management](#stash-management)\n        - [`stash-branch`](#stash-branch) - Advanced stash operations\n    - [Synchronization](#synchronization)\n        - [`sync`](#sync) - Sync with upstream\n- [Git Integration: How `git-x` Just Works™](#git-integration-how-git-x-just-works)\n- [What's Under the Hood?](#whats-under-the-hood)\n- [Performance](#performance)\n- [Command Transparency](#command-transparency)\n- [Roadmap Ideas](#roadmap-ideas)\n- [Built With](#built-with)\n- [License](#license)\n\n---\n\n## Why Does This Exist?\n\nGit is powerful, but its UX is stuck in the early 2000s.\n\nYou're probably asking:\n\n- “Why is this branch here?”\n- “What changed since I last pushed?”\n- “Can I just get a clean, visual summary of this repo?”\n- “How do I undo that commit without wrecking everything?”\n\nMost Git tools either:\n- Show *too much* (spammy logs, unreadable diffs)\n- Show *too little* (cryptic one-liners with no context)\n- Or require memorizing a dozen flags\n\n`git-x` fixes that by giving you **opinionated, purpose-built subcommands** that *just do the thing*.\n\n\u003e 💡 **Want to see git-x in action?** Check out our [**Real-World Scenarios**](docs/real-world-scenarios.md) document to see exactly how git-x commands solve everyday developer problems like code review cleanup, branch naming mistakes, urgent context switching, and complex remote workflows.\n\n---\n\n## Installation\n\n```shell\ncargo install git-x\n```\n\nOr clone and run manually:\n\n```shell\ngit clone https://github.com/simeg/git-x\ncd git-x\ncargo install --path .\n```\n\n### Shell Completion\n\n`git-x` supports tab completion for all shells.\n\n#### Installation\n\nInstall completion files to standard directories:\n\n```shell\n# Install for your shell\ngit x completion-install bash\ngit x completion-install zsh\ngit x completion-install fish\n```\n\nThis will:\n- Install completion files to the standard system directories\n- Provide shell-specific setup instructions\n- Create directories if they don't exist\n\n**Follow the printed instructions after installation to enable completions in your shell configuration.**\n\n#### Troubleshooting\n\nIf tab completion doesn't work immediately, you may need to:\n\n```shell\n# For zsh - clear completion cache\nrm ~/.zcompdump*\n\n# For bash - refresh command hash\nhash -r\n\n# For fish - clear completion cache\nfish -c \"complete --erase\"\n\n# Then restart your shell\n```\n\n---\n\n## Example Commands\n\n---\n\n## Repository Information \u0026 Analysis\n\n### `info`\n\n\u003e Show a high-level overview of the current repo  \n\u003e [🔍 *Git commands*](docs/command-internals.md#info)\n\n```shell\ngit x info\n```\n\n#### Output:\n\n```shell\n🗂️  Repository: git-x\n📍 Current branch: master\n🔗 Upstream: origin/master\n✅ Status: Up to date\n⚠️  Working directory: Has changes\n📋 Staged files: None\n❌ No open PR for current branch\n📊 vs main: 2 ahead, 1 behind\n\n📋 Recent activity:\n   * a1b2c3d Add new feature (2 hours ago) \u003cAlice\u003e\n   * d4e5f6g Fix bug in parser (4 hours ago) \u003cBob\u003e\n   * g7h8i9j Update documentation (1 day ago) \u003cCharlie\u003e\n```\n\n#### Enhanced Features:\n- **Recent activity timeline** - Shows recent commits across all branches with author info\n- **GitHub PR detection** - Automatically detects if current branch has an open pull request (requires `gh` CLI)\n- **Branch comparisons** - Shows ahead/behind status compared to main branches\n- **Detailed view** - Use any git-x command to see additional details\n\n---\n\n### `health`\n\n\u003e Check repository health and identify potential issues  \n\u003e [🔍 *Git commands*](docs/command-internals.md#health)\n\n```shell\ngit x health\n```\n\n#### Output:\n\n```shell\n🏥 Repository Health Check\n==============================\n⠁ [00:00:01] [########################################] 8/8 Health check complete!\n✅ Git configuration: OK\n✅ Remotes: OK\n✅ Branches: OK\n✅ Working directory: Clean\n✅ Repository size: OK\n⚠️  Security: Potential issues found\n✅ .gitignore: Looks good\n✅ Binary files: OK\n\n🔧 Found 3 issue(s):\n   🔒 2 potentially sensitive commit message(s) found:\n        • a1b2c3d Add API key configuration\n        • d4e5f6g Update secret token handling\n   🔐 1 potentially sensitive file(s) in repository:\n        • config/private.key\n   ⚠️  2 environment file(s) found - ensure no secrets are committed:\n        • .env.local\n        • .env.production\n```\n\n#### What it checks:\n- **Git configuration** - Validates user.name and user.email settings\n- **Remotes** - Ensures remote repositories are configured\n- **Working directory status** - Detects uncommitted changes\n- **Untracked files** - Counts files not under version control\n- **Stale branches** - Identifies branches older than 1 month\n- **Repository size** - Warns about large repositories that may need cleanup\n- **Staged changes** - Shows files ready for commit\n- **Security issues** - Scans for potential credentials in history and sensitive files\n- **.gitignore effectiveness** - Suggests improvements to ignore patterns\n- **Binary files** - Identifies large binary files that might benefit from Git LFS\n\n#### Enhanced Features:\n- **Progress Indicator**: Real-time progress bar showing current check being performed\n- **Detailed Security Reporting**: Shows exactly which commits, files, and patterns triggered security warnings\n- **Specific Recommendations**: Lists actual files and examples instead of just counts\n- **Performance Optimized**: Efficiently scans large repositories with visual feedback\n\nUseful for:\n- Daily repository maintenance\n- Pre-commit health checks\n- Security auditing\n- Identifying cleanup opportunities\n- Team onboarding (ensuring clean local state)\n\n---\n\n### `summary`\n\n\u003e Show a short, changelog-style summary of recent commits  \n\u003e [🔍 *Git commands*](docs/command-internals.md#summary)\n\n```shell\ngit x summary\ngit x summary --since \"2 days ago\"\n```\n\n**Flags:**\n- `--since` — Accepts natural date formats like \"2 days ago\", \"last Monday\", or exact dates like \"2025-07-01\". It uses Git's built-in date parser, so most human-readable expressions work.\n\n#### Output:\n\n**Without `--since` flag (shows repository summary):**\n```shell\n📊 Repository Summary\n==================================================\n🗂️  Repository: git-x\n📍 Current branch: master\n🔗 Upstream: origin/master (up to date)\n📈 Commits (1 month ago): 72\n📁 Files: 63 total\n```\n\n**With `--since` flag (shows changelog-style commit history):**\n```shell\n📅 Commit Summary since 2 days ago:\n==================================================\n\n📆 2025-07-30\n - 🔹 Big re-architecture (by Simon Egersand, 4 hours ago)\n - 🐛 Fix remaining test failures (by Alice, 6 hours ago)\n\n📆 2025-07-29\n - ✨ Add new features (by Bob, 1 day ago)\n - 🛠 Refactor core components (by Carol, 1 day ago)\n```\n\n- **Default behavior**: Shows repository overview with stats from the last month\n- **With `--since`**: Groups commits by day with commit messages, authors, and timestamps\n- Useful for writing daily stand-ups, changelogs, or review summaries\n- Can be customized using `--since` (e.g. `--since \"1 week ago\"`)\n- Sorts commits newest-first within each day\n\n---\n\n### `contributors`\n\n\u003e Show contributor statistics for the repository  \n\u003e [🔍 *Git commands*](docs/command-internals.md#contributors)\n\n```shell\ngit x contributors\n```\n\n#### Output:\n\n```shell\n📊 Repository Contributors (15 total commits):\n\n🥇 Alice Smith 10 commits (66.7%)\n   📧 alice@example.com | 📅 2025-01-01 to 2025-01-20\n\n🥈 Bob Jones 3 commits (20.0%)\n   📧 bob@example.com | 📅 2025-01-05 to 2025-01-15\n\n🥉 Charlie Brown 2 commits (13.3%)\n   📧 charlie@example.com | 📅 2025-01-10 to 2025-01-12\n```\n\nShows repository contributors ranked by commit count with email addresses and date ranges of their contributions.\n\n---\n\n### `technical-debt`\n\n\u003e Analyze code complexity and technical debt metrics  \n\u003e [🔍 *Git commands*](docs/command-internals.md#technical-debt)\n\n```shell\ngit x technical-debt\n```\n\n#### Output:\n\n```shell\n🔍 Technical Debt Analysis\n\n📊 Large Commits (\u003e20 files changed)\n   ✓ No large commits found\n\n🔥 File Hotspots (frequently modified)\n   1. 15 changes | HIGH | src/main.rs\n   2. 8 changes | MED | src/lib.rs\n   3. 6 changes | LOW | README.md\n\n🌿 Long-lived Branches (\u003e30 days)\n   • feature/old-refactor | 3 months ago | Alice Smith\n   • hotfix/legacy-fix | 6 weeks ago | Bob Jones\n\n🔄 Code Churn (high add/delete ratio)\n   1. +245 -189 | HIGH | src/parser.rs\n   2. +156 -98 | MED | src/utils.rs\n\n📦 Binary Files in Repository\n   ! 3 binary files found\n   • assets/logo.png\n   • docs/manual.pdf\n   ...\n\nAnalysis complete!\n```\n\nAnalyzes repository for technical debt indicators including large commits, file modification hotspots, long-lived branches, code churn patterns, and binary file usage.\n\n---\n\n### `large-files`\n\n\u003e Find largest files in repository history  \n\u003e [🔍 *Git commands*](docs/command-internals.md#large-files)\n\n```shell\ngit x large-files\ngit x large-files --limit 20 --threshold 5\n```\n\n#### Output:\n\n```shell\n🔍 Scanning repository for large files...\n\n📁 Largest files in repository history:\n  15.2 MB  assets/video.mp4\n   8.7 MB  docs/presentation.pdf\n   3.1 MB  images/hero-banner.png\n\n💡 Found 3 files larger than 1.0 MB\n```\n\n**Flags:**\n- `--limit \u003cnumber\u003e` — Number of files to show (default: 10)\n- `--threshold \u003cMB\u003e` — Minimum file size in MB to include\n\nUseful for identifying large files that may be slowing down your repository.\n\n---\n\n## Branch Management\n\n### `new`\n\n\u003e Create and switch to a new branch  \n\u003e [🔍 *Git commands*](docs/command-internals.md#new)\n\n```shell\ngit x new feature-branch\ngit x new hotfix --from main\n```\n\n#### Output:\n\n```shell\n🌿 Creating branch 'feature-branch' from 'current-branch'...\n✅ Created and switched to branch 'feature-branch'\n```\n\n**Flags:**\n- `--from \u003cbranch\u003e` — Base the new branch off a specific branch instead of current\n\nValidates branch names and prevents common Git naming issues.\n\n---\n\n### `rename-branch`\n\n\u003e Rename the current branch locally and on remote  \n\u003e [🔍 *Git commands*](docs/command-internals.md#rename-branch)\n\n```shell\ngit x rename-branch new-feature-name\n```\n\n#### Output:\n\n```shell\n🔄 Renaming branch 'old-name' to 'new-feature-name'...\n✅ Branch renamed successfully\n```\n\nSafely renames your current branch by:\n- Renaming the local branch\n- Updating the remote tracking branch\n- Cleaning up old remote references\n\n---\n\n### `switch-recent`\n\n\u003e Interactive picker for recent branches  \n\u003e [🔍 *Git commands*](docs/command-internals.md#switch-recent)\n\n```shell\ngit x switch-recent\n```\n\n#### Output:\n\n```shell\n? Select a branch to switch to:\n  🌟 feature/auth-improvement\n  📁 hotfix/login-bug\n  📁 feature/dark-mode\n  📁 main\n```\n\nShows an interactive menu of your 10 most recently used branches (excluding current branch). Use arrow keys to navigate, Enter to select.\n\n---\n\n### `clean-branches`\n\n\u003e Delete all fully merged local branches (except protected ones)  \n\u003e [🔍 *Git commands*](docs/command-internals.md#clean-branches)\n\n```shell\ngit x clean-branches\ngit x clean-branches --dry-run  # Preview what would be deleted\n```\n\n#### Output:\n\n```shell\n⚠️  Are you sure you want to clean merged branches?\nThis will delete 3 merged branches: feature/refactor, bugfix/signup-typo, hotfix/quick-fix\n[y/N]: y\n\n🧹 Deleted 3 merged branches:\n- feature/refactor\n- bugfix/signup-typo\n- hotfix/quick-fix\n```\n\n**Flags:**\n- `--dry-run` — Show which branches would be deleted without actually deleting them\n\n**Note:** This command will prompt for confirmation before deleting branches to prevent accidental deletions.\n\n---\n\n### `prune-branches`\n\n\u003e Delete branches merged into current branch  \n\u003e [🔍 *Git commands*](docs/command-internals.md#prune-branches)\n\nDeletes all **local branches** that have already been **merged into the current branch**, while skipping protected ones.\n\nUseful for keeping your repo tidy after merging feature branches.\n\n```shell\ngit x prune-branches\ngit x prune-branches --except \"release,v1.0-temp\"\ngit x prune-branches --dry-run  # Preview what would be deleted\n```\n\n#### Output:\n\n```shell\n⚠️  Are you sure you want to prune merged branches?\nThis will delete 2 merged branches: feature/completed-task, hotfix/old-bug\n[y/N]: y\n\n🧹 Deleted merged branch 'feature/completed-task'\n🧹 Deleted merged branch 'hotfix/old-bug'\n```\n\n**Defaults:**\n- Protected branches: `main`, `master`, `develop`\n- Won't delete current branch\n- Will only delete branches that are *fully merged*\n\n**Flags:**\n- `--except \u003cbranches\u003e` — Comma-separated list of branch names to exclude from deletion\n- `--dry-run` — Show which branches would be deleted without actually deleting them\n\n**Note:** This command will prompt for confirmation before deleting branches to prevent accidental deletions.\n\n---\n\n### `upstream`\n\n\u003e Manage upstream branch relationships  \n\u003e [🔍 *Git commands*](docs/command-internals.md#upstream)\n\n```shell\ngit x upstream status\ngit x upstream set origin/main\ngit x upstream sync-all --dry-run\n```\n\n#### Subcommands:\n\n**`status`** — Show upstream status for all branches\n\n```shell\n🔗 Upstream status for all branches:\n* main -\u003e origin/main\n  feature -\u003e (no upstream)\n  hotfix -\u003e origin/hotfix\n```\n\n**`set \u003cupstream\u003e`** — Set upstream for current branch\n\n**`sync-all`** — Sync all local branches with their upstreams\n- `--dry-run` — Show what would be synced without doing it\n- `--merge` — Use merge instead of rebase\n\nStreamlines upstream branch management across your entire repository.\n\n---\n\n## Commit History \u0026 Visualization\n\n### `graph`\n\n\u003e Pretty Git log with branches, remotes, and HEADs  \n\u003e [🔍 *Git commands*](docs/command-internals.md#graph)\n\n```shell\ngit x graph\n```\n\n#### Output:\n\n```shell\n* fc27857 (HEAD -\u003e master, origin/master) Make tests more robust\n* d109d83 Fix remaining test failures with improved git repository detection\n* ded10bb Apply code formatting and linting fixes\n| * 71b448a (feature/auth-improvement) Apply code formatting and linting fixes\n|/  \n* 6c69a03 Fix failing tests on GitHub Actions with robust error handling\n* 4f6565e Fix tests\n* 433788a Update README.md\n* 8594ff0 Implement comprehensive layered architecture for code structure reorganization\n```\n\n---\n\n### `color-graph`\n\n\u003e Colorized Git log with branches, remotes, HEADs, and author info  \n\u003e [🔍 *Git commands*](docs/command-internals.md#color-graph)\n\n```shell\ngit x color-graph\n```\n\n#### Output:\n\nEnhanced version of `git x graph` with:\n- **Full color support** for branches, commits, and decorations\n- **Author names and timestamps** for each commit\n- **Rich formatting** that's easy to scan\n\n---\n\n### `since [ref]`\n\n\u003e Show commits since a reference (e.g., `d926b4b`, my-branch, origin/main)  \n\u003e [🔍 *Git commands*](docs/command-internals.md#since-ref)\n\n```shell\ngit x since origin/main\n```\n\n#### Output:\n\n```shell\n🔍 Commits since origin/main:\n- 8f2d9b3 fix login bug\n- b41a71e add auth test\n```\n\n---\n\n### `what [branch]`\n\n\u003e Show what's different between this branch and another (default: main)  \n\u003e [🔍 *Git commands*](docs/command-internals.md#what-branch)\n\n```shell\ngit x what\ngit x what --target develop\n```\n\n#### Output:\n\n```shell\nBranch: feature/new-ui vs main\n+ 4 commits ahead\n- 2 commits behind\nChanges:\n - + new_ui.js\n - ~ App.tsx\n - - old_ui.css\n```\n\n**Flags:**\n- `--target \u003cbranch\u003e` — Branch to compare to (default: main)\n\n---\n\n## Commit Operations\n\n### `fixup`\n\n\u003e Create fixup commits for easier interactive rebasing  \n\u003e [🔍 *Git commands*](docs/command-internals.md#fixup)\n\n```shell\ngit x fixup abc123\ngit x fixup abc123 --rebase\n```\n\n#### Output:\n\n```shell\n🔧 Creating fixup commit for abc123...\n✅ Fixup commit created for abc123\n💡 To squash the fixup commit, run: git rebase -i --autosquash abc123^\n```\n\n**Flags:**\n- `--rebase` — Automatically start interactive rebase with autosquash after creating fixup\n\nCreates a fixup commit that can be automatically squashed during interactive rebase. Requires staged changes.\n\n---\n\n### `undo`\n\n\u003e Undo the last commit (without losing changes)  \n\u003e [🔍 *Git commands*](docs/command-internals.md#undo)\n\n```shell\ngit x undo\n```\n\n#### Output:\n\n```shell\nLast commit undone (soft reset). Changes kept in working directory.\n```\n\n---\n\n### `bisect`\n\n\u003e Simplified bisect workflow  \n\u003e [🔍 *Git commands*](docs/command-internals.md#bisect)\n\n```shell\n# Start bisect session\ngit x bisect start \u003cgood-commit\u003e \u003cbad-commit\u003e\n\n# Mark current commit as good/bad/untestable\ngit x bisect good\ngit x bisect bad\ngit x bisect skip\n\n# Show bisect status\ngit x bisect status\n\n# End bisect session\ngit x bisect reset\n```\n\n#### Example workflow:\n\n```shell\n# Start bisecting between a known good commit and HEAD\ngit x bisect start HEAD HEAD~10\n\n# Git checks out a commit for testing\n# Test your code, then mark the commit:\ngit x bisect bad    # if bug is present\ngit x bisect good   # if bug is not present\ngit x bisect skip   # if commit is untestable\n\n# Repeat until git finds the first bad commit\ngit x bisect reset  # return to original branch\n```\n\n#### Output:\n\n```shell\n🔍 Starting bisect between abc123 (good) and def456 (bad)\n📍 Checked out commit: 789abc Fix user authentication\n⏳ Approximately 3 steps remaining\n\n💡 Test this commit and run:\n  git x bisect good if commit is good\n  git x bisect bad if commit is bad\n  git x bisect skip if commit is untestable\n```\n\n---\n\n## Stash Management\n\n### `stash-branch`\n\n\u003e Advanced stash management with branch integration  \n\u003e [🔍 *Git commands*](docs/command-internals.md#stash-branch)\n\n```shell\ngit x stash-branch create new-feature\ngit x stash-branch clean --older-than 7d\ngit x stash-branch apply-by-branch feature-work\ngit x stash-branch interactive\ngit x stash-branch export ./patches\n```\n\n#### Subcommands:\n\n**`create \u003cbranch-name\u003e`** — Create a new branch from a stash\n- `--stash \u003cref\u003e` — Use specific stash (default: latest)\n\n**`clean`** — Clean up old stashes\n- `--older-than \u003ctime\u003e` — Remove stashes older than specified time\n- `--dry-run` — Show what would be cleaned without doing it\n\n#### Example Output for `clean`:\n\n```shell\n🧹 Cleaning 3 stash(es):\n  stash@{0}: WIP on feature: Add new component\n  stash@{1}: On main: Fix typo in README\n  stash@{2}: WIP on bugfix: Debug auth issue\n\n⚠️  Are you sure you want to clean old stashes?\nThis will delete 3 stashes: stash@{0}, stash@{1}, stash@{2}\n[y/N]: y\n\n✅ Cleaned 3 stash(es)\n```\n\n**`apply-by-branch \u003cbranch-name\u003e`** — Apply stashes from a specific branch\n- `--list` — List matching stashes instead of applying\n\n**`interactive`** — Interactive stash management with fuzzy search\n- Visual menu for applying, deleting, or creating branches from stashes\n- Supports multiple selection for batch operations\n- Shows stash content and branch associations\n\n**`export \u003coutput-dir\u003e`** — Export stashes to patch files\n- `--stash \u003cref\u003e` — Export specific stash (default: all stashes)\n- Creates `.patch` files that can be shared or archived\n- Useful for backing up or sharing stash content\n\n#### Example Output for `interactive`:\n\n```shell\n📋 What would you like to do?\n❯ Apply selected stash\n  Delete selected stashes\n  Create branch from stash\n  Show stash diff\n  List all stashes\n  Exit\n\n🎯 Select stash to apply:\n❯ stash@{0}: WIP on feature: Add authentication (from feature-auth)\n  stash@{1}: On main: Fix README typo (from main)\n  stash@{2}: WIP on bugfix: Debug API calls (from api-fixes)\n```\n\nHelps manage stashes more effectively by associating them with branches and providing modern interactive workflows.\n\n**Note:** Interactive and destructive commands will prompt for confirmation to prevent accidental data loss.\n\n---\n\n## Synchronization\n\n### `sync`\n\n\u003e Sync current branch with upstream (fetch + rebase/merge)  \n\u003e [🔍 *Git commands*](docs/command-internals.md#sync)\n\n```shell\ngit x sync\ngit x sync --merge\n```\n\n#### Output:\n\n```shell\n🔄 Syncing branch 'feature' with 'origin/feature'...\n⬇️ Branch is 2 commit(s) behind upstream\n✅ Successfully rebased onto upstream\n```\n\n**Flags:**\n- `--merge` — Use merge instead of rebase for integration\n\nAutomatically fetches from remote and integrates upstream changes into your current branch.\n\n\n## Command Transparency\n\n`git-x` believes in **complete transparency** — there's no magic, no hidden behavior, and no surprise side effects.\n\nEvery `git-x` command is a **thin wrapper** around standard Git operations that you could run yourself. Want to know exactly what's happening under the hood? Check out our [**Command Internals Documentation**](docs/command-internals.md).\n\n**Why this matters:**\n- **Trust** — You can verify every operation before and after\n- **Learning** — Understand the Git commands you're actually running  \n- **Debugging** — When something goes wrong, you know exactly what to investigate\n- **Portability** — You can replicate any `git-x` workflow with plain Git\n\n**Example:** When you run `git x graph`, it literally executes:\n```shell\ngit log --graph --oneline --all -20\n```\n\nNo database calls, no hidden state, no magic — just Git doing Git things, with better UX.\n\n---\n\n## Git Integration: How `git-x` Just Works™\n\nSince `git-x` is installed as a standalone binary, Git automatically recognizes it as a subcommand when you type `git x [command]`.\n\nThis is Git's standard extension mechanism — no configuration needed.\n\n**How it works:**\n1. You run `git x info`\n2. Git looks for an executable called `git-x` in your `$PATH`\n3. Git runs `git-x info` and displays the output\n\n**Why this rocks:**\n- Zero setup required\n- Works in any Git repo\n- Integrates seamlessly with your existing Git workflow\n- All your Git aliases, hooks, and config still work\n\n---\n\n## What's Under the Hood?\n\n`git-x` is a thin, opinionated wrapper around native Git commands.\n\n**Philosophy:**\n- **No magic** — Every `git-x` command maps to standard Git operations\n- **Readable** — You can see exactly what Git commands are being run\n- **Predictable** — Follows Git's existing patterns and conventions\n- **Fast** — Minimal overhead, direct subprocess calls\n\n**Example:** `git x graph` literally runs:\n```shell\ngit log --graph --oneline --all -20\n```\n\n**Why Rust?**\n- **Fast startup** — Sub-millisecond command execution\n- **Zero dependencies** — Single binary, no runtime requirements\n- **Cross-platform** — Works on macOS, Linux, Windows\n- **Memory safe** — No crashes, no memory leaks\n\n---\n\n## Performance\n\n`git-x` is designed with speed and efficiency at its core. Every command has been optimized for performance through parallel execution and smart concurrency.\n\n### Parallel \u0026 Async Architecture\n\nAll major analysis commands leverage:\n- **Multi-threading** for CPU-intensive operations (file processing, data aggregation)\n- **Async execution** for I/O-bound Git operations (fetching, status checks)\n- **Concurrent Git calls** to minimize total execution time\n\n### Under the Hood\n\n```rust\n// Example: Parallel Git operations\nlet (repo_info, branch_status, working_dir) = tokio::try_join!(\n    AsyncGitOperations::repo_root(),\n    AsyncGitOperations::branch_info_parallel(),\n    AsyncGitOperations::is_working_directory_clean(),\n)?;\n```\n\n```rust\n// Example: Multi-threaded file processing\nlet large_files: Vec\u003cLargeFile\u003e = files\n    .par_iter()\n    .filter_map(|file| analyze_file_size(file))\n    .collect();\n```\n\n### Performance Philosophy\n\n- **Algorithmic optimization first** — Fix O(n²) problems before adding concurrency\n- **Smart parallelization** — I/O operations run async, CPU work runs multi-threaded\n- **Minimal overhead** — Native Git subprocess calls, no unnecessary abstractions\n- **Responsive feedback** — Show progress and timing information\n\nThe result? Commands that feel instant, even on large repositories.\n\n---\n\n## Built With\n\n- Language: Rust 🦀\n- Shell: Integrates cleanly with Bash, Zsh, Fish, etc.\n- Uses: native `git` under the hood — no black magic\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimeg%2Fgit-x","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimeg%2Fgit-x","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimeg%2Fgit-x/lists"}