{"id":23508970,"url":"https://github.com/maxbolgarin/gitbasher","last_synced_at":"2026-03-01T15:04:35.890Z","repository":{"id":190819999,"uuid":"600709821","full_name":"maxbolgarin/gitbasher","owner":"maxbolgarin","description":"Bash scripts for easy git from the command line","archived":false,"fork":false,"pushed_at":"2024-10-19T09:48:10.000Z","size":922,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-19T11:01:13.699Z","etag":null,"topics":["bash","cli","developer-tools","git","makefile","utility"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/maxbolgarin.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2023-02-12T10:53:17.000Z","updated_at":"2024-09-14T14:05:59.000Z","dependencies_parsed_at":"2024-08-11T16:00:25.232Z","dependency_job_id":"22e5214c-e162-4a1e-a525-59d972168e89","html_url":"https://github.com/maxbolgarin/gitbasher","commit_stats":null,"previous_names":["maxbolgarin/gitbasher"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbolgarin%2Fgitbasher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbolgarin%2Fgitbasher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbolgarin%2Fgitbasher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbolgarin%2Fgitbasher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxbolgarin","download_url":"https://codeload.github.com/maxbolgarin/gitbasher/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249274881,"owners_count":21242173,"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","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":["bash","cli","developer-tools","git","makefile","utility"],"created_at":"2024-12-25T11:36:14.733Z","updated_at":"2026-03-01T15:04:35.879Z","avatar_url":"https://github.com/maxbolgarin.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gitbasher – simple **bash** utility that makes **git** easy to use\n\n\n[![Latest Release](https://img.shields.io/github/v/release/maxbolgarin/gitbasher.svg?style=flat-square)](https://github.com/maxbolgarin/gitbasher/releases/latest)\n[![GitHub license](https://img.shields.io/github/license/maxbolgarin/gitbasher.svg)](https://github.com/maxbolgarin/gitbasher/blob/master/LICENSE)\n[![Build Status](https://github.com/maxbolgarin/gitbasher/actions/workflows/build.yml/badge.svg)](https://github.com/maxbolgarin/gitbasher/actions)\n\n\u003cpicture\u003e\n    \u003cimg src=\".github/commit.gif\" width=\"600\" alt=\"commit example\"\u003e\n\u003c/picture\u003e\n\n---\n\nWith **gitbasher** usage of `git` becomes more simple and intuitive. It helps speeding up the development process, making it more consistent reducing mistakes. This is a wrapper around the most used git commands with a cleaner interface. It uses `bash` `git` `sed` `grep`, `curl` and some built-in utilities.\n\n\n### Quick Installation (recommended)\n\n```bash\nGITB_PATH=/usr/local/bin/gitb \u0026\u0026 \\\nsudo mkdir -p $(dirname $GITB_PATH) \u0026\u0026 \\\ncurl -fSL https://github.com/maxbolgarin/gitbasher/releases/latest/download/gitb | sudo tee $GITB_PATH \u003e /dev/null \u0026\u0026 \\\nsudo chmod +x $GITB_PATH\n```\n\nOr using npm:\n\n```bash\nnpm install -g gitbasher\n```\n\nIn Windows use `wsl` (enter `wsl` in terminal, [read more](https://learn.microsoft.com/en-us/windows/wsl/setup/environment)) to enable Linux environment. Directory `/usr/local/bin/` is not mandatory. If you get `Permission denied`, use `sudo` or put it to `~/.local/bin` with adding it to `PATH` ([how](https://discussions.apple.com/thread/254226896)).\n\n\n## Table of Contents\n- [Quick Start Guide](#quick-start-guide)\n- [Why You Should Try This](#why-you-should-try-this)\n- [Real-World Examples](#real-world-examples)\n- [AI-Powered Commits](#ai-powered-commits)\n- [Common Workflows](#common-workflows)\n- [Complete Documentation](#complete-documentation)\n- [Troubleshooting \u0026 FAQ](#troubleshooting--faq)\n- [Contributing](#contributing)\n\n\n## Quick Start Guide\n\n### 1. First Steps\n```bash\n# Navigate to any git repository\ncd your-project\n\n# See all available commands\ngitb\n```\n\n### 2. Your First Commit\n```bash\n# Smart commit - select files and create conventional message\ngitb commit\n\n# Fast commit - add all files with quick message\ngitb commit fast\n\n# AI-powered commit (after setting up API key)\ngitb commit ai\n```\n\n### 3. Essential Daily Commands\n```bash\ngitb status        # Check status\ngitb commit        # Make a commit\ngitb push          # Push changes\ngitb pull          # Pull changes\ngitb branch        # Switch branches\n```\n\n### 4. Set Up Your Environment\n```bash\n# Configure your identity\ngitb cfg user\n\n# Set default branch (usually 'main' or 'master')\ngitb cfg default\n\n# Set up AI features (optional but recommended)\ngitb cfg ai\n```\n\n\n## Why You Should Try This\n\n**gitbasher** is essential if you use `git` on the daily basis. Benefits you will get:\n\n* **⚡ Faster Development**: Spend almost no time on git commands\n* **🧠 No More Memorizing**: No need to remember/google exact command names and parameters\n* **📝 Better Commit Messages**: Conventional commits with manual or **AI-generated** messages\n* **🔧 Advanced Commands Made Easy**: Use `git rebase`, `git stash`, and hooks without complexity\n* **🌊 GitHub Flow**: Simplified branch management following best practices\n* **🎯 Consistent Workflow**: Standardized processes across your team\n\n\u003cpicture\u003e\n    \u003cimg src=\".github/push.gif\" width=\"600\" alt=\"push example\"\u003e\n\u003c/picture\u003e\n\n\n## Real-World Examples\n\n### 🚀 Scenario 1: Starting a New Feature\n\n**Traditional Git:**\n```bash\ngit switch main                   # Switch to main\ngit pull origin main                # Get latest changes\ngit switch -c feature/user-auth   # Create new branch\n# ... make changes ...\ngit add src/auth.js src/login.js    # Stage files\ngit commit -m \"feat(auth): add user authentication system\"\ngit push -u origin feature/user-auth\n```\n\n**With gitbasher:**\n```bash\ngitb branch newd                   # Create new branch from updated main\n# ... make changes ...\ngitb commit push                    # Smart commit + push\n```\n\n### 🐛 Scenario 2: Quick Bug Fix\n\n**Traditional Git:**\n```bash\ngit status                          # Check what's changed\ngit add .                          # Add all files\ngit commit -m \"fix: resolve login issue\"\ngit push\n```\n\n**With gitbasher:**\n```bash\ngitb commit push                   # Fast commit + push (one command!)\n```\n\n### 🔀 Scenario 3: Merging Feature Branch\n\n**Traditional Git:**\n```bash\ngit switch main\ngit pull origin main\ngit merge feature/user-auth\ngit push origin main\ngit branch -d feature/user-auth\n```\n\n**With gitbasher:**\n```bash\ngitb merge to-main             # Switch to main and merge current branch\ngitb branch delete                 # Select and delete the merged branch\n```\n\n### 🤖 Scenario 4: AI-Powered Development\n\n**After making changes to multiple files:**\n```bash\ngitb commit ai                   # AI analyzes changes and generates:\n                           # \"feat(auth): implement JWT authentication with refresh tokens\"\n```\n\n**For quick fixes:**\n```bash\ngitb commit aif                  # AI commit all files with smart message\n```\n\n### 🎯 Scenario 5: Code Review Preparation\n\n**Clean up commits before PR:**\n```bash\ngitb rebase i                    # Interactive rebase to squash/reorder commits\ngitb commit fix                  # Create fixup commits for review feedback\ngitb rebase s                    # Auto-squash fixup commits\n```\n\n### 📦 Scenario 6: Release Management\n\n**Creating and managing releases:**\n```bash\ngitb tag                      # Create version tag\ngitb tag push                 # Push tag to remote\ngitb log                      # Review commit history\n```\n\n\n## AI-Powered Commits\n\nTransform your commit workflow with AI-generated messages that follow conventional commit standards.\n\n### Setup (One-time)\n\n#### 1. Get Your API Key\n- Visit [Google AI Studio](https://aistudio.google.com/app/apikey)\n- Create a new API key\n- Copy it for the next step\n\n#### 2. Configure gitbasher\n```bash\ngitb cfg ai\n# Enter your API key when prompted\n# Choose local (current repo) or global (all repos)\n```\n\n#### 3. Optional: Proxy Setup\nFor regions with API restrictions:\n```bash\ngitb cfg proxy\n# Examples:\n# http://proxy.example.com:8080\n# http://username:password@proxy.example.com:8080\n```\n\n### AI Command Examples\n\n| **Scenario** | **Command** | **What It Does** |\n|--------------|-------------|------------------|\n| **Staged files ready** | `gitb c ai` | Analyzes staged changes, generates message |\n| **Quick fix needed** | `gitb c aif` | Adds all files + AI message |\n| **Ready to ship** | `gitb c aip` | AI commit + automatic push |\n| **Full workflow** | `gitb c aifp` | Add all + AI commit + push |\n| **Need control** | `gitb c ais` | AI message + manual type/scope |\n| **Detailed commit** | `gitb c aim` | Generates multiline commit message |\n\n## Common Workflows\n\n### 🔄 Daily Development Workflow\n\n```bash\n# Start your day\ngitb st                     # Check repository status\ngitb pu                     # Pull latest changes\n\n# Work on features\ngitb b n                    # Create new feature branch\n# ... code changes ...\ngitb c ai                   # AI-powered commit\ngitb p                      # Push changes\n\n# Code review cycle\ngitb c fix                  # Create fixup commits\ngitb r a                    # Clean up with autosquash\ngitb p f                    # Force push cleaned history\n```\n\n### 🚨 Hotfix Workflow\n\n```bash\ngitb b main                 # Switch to main branch\ngitb pu                     # Get latest changes\ngitb b n                    # Create hotfix branch\n# ... fix the issue ...\ngitb c aif                  # Fast AI commit\ngitb p                      # Push hotfix\ngitb m to-main             # Merge to main\n```\n\n### 🔀 Feature Integration\n\n```bash\n# Prepare feature for merge\ngitb pu                     # Update current branch\ngitb r main                 # Rebase on main\ngitb l                      # Review commit history\ngitb c fix                  # Address review feedback\ngitb r a                    # Squash fixups\n\n# Integrate\ngitb m to-main             # Merge to main\ngitb b del                 # Clean up feature branch\n```\n\n### 🎯 Release Workflow\n\n```bash\ngitb b main                 # Switch to main\ngitb pu                     # Get latest changes\ngitb l                      # Review changes since last release\ngitb t a                    # Create annotated release tag\ngitb t push                 # Push tag to trigger CI/CD\n```\n\n### 🛠️ Maintenance Workflow\n\n```bash\n# Clean up old branches\ngitb b del                  # Interactive branch deletion\n\n# Manage stashes\ngitb stash                  # Interactive stash management\n\n# Check hooks\ngitb hook list              # See all git hooks status\ngitb hook create            # Set up project hooks\n```\n\n\n## Complete Documentation\n\n### Available Commands\n\n| Command                         | Short aliases       | Description                              |\n|---------------------------------|---------------------|------------------------------------------|\n| [**commit**](#gitb-commit-mode) | `c` `co` `com`    | Everything about commit creation         |\n| [**push**](#gitb-push-mode)     | `p` `ps` `ph`     | Pushing changes to a remote repository   |\n| [**pull**](#gitb-pull-mode)     | `pu` `pl` `pul`   | Pulling changes from a remote repository |\n| [**branch**](#gitb-branch-mode) | `b` `br` `bran`   | Managing branches                        |\n| [**tag**](#gitb-tag-mode)       | `t` `tg`           | Managing tags                            |\n| [**merge**](#gitb-merge-mode)   | `m` `me`           | Merge changes to the current branch      |\n| [**rebase**](#gitb-rebase-mode) | `r` `re` `base`   | Rebase current branch                    |\n| [**reset**](#gitb-reset-mode)   | `res`               | Easy to use git reset                    |\n| [**stash**](#gitb-stash-mode)   | `s` `sta`          | Manage git stashes                       |\n| [**hook**](#gitb-hook-mode)     | `ho` `hk`          | Comprehensive git hooks management with interactive menus |\n| [**config**](#gitb-config-mode) | `cf` `cfg` `conf` | Configurate gitbasher                    |\n| **status**                      | `st`                | Info about repo and changed files        |\n| [**log**](#gitb-log-mode)       | `l` `lg`           | Git log utilities and search functions   |\n| **reflog**                      | `rl` `rlg`         | Open git reflog in a pretty format       |\n| **help**                        | `h` `man`          | Show help                                |\n\n\n### `gitb commit \u003cmode\u003e`\n\n| **Mode**   | **Short**    | **Description** | **Example Use Case** |\n|------------|--------------|-----------------|---------------------|\n| `\u003cempty\u003e`  |              | Select files to commit and create conventional message | Regular feature development |\n| `msg`      | `m`          | Create multiline commit message using text editor | Detailed commit descriptions |\n| `ticket`   | `t`          | Add tracker's ticket info to commit header | JIRA/GitHub issue integration |\n| `fast`     | `f`          | Add all files and create commit without scope | Quick bug fixes |\n| `fasts`    | `fs`         | Add all files and create commit with scope | Feature additions |\n| `push`     | `pu` `p`    | Create commit and push changes | Deploy-ready commits |\n| `fastp`    | `fp`         | Fast commit and push | One-command workflow |\n| `fastsp`   | `fsp` `fps` | Fast commit with scope and push | Complete feature deployment |\n| `ai`       | `llm` `i`   | AI-generated commit message | Smart commit automation |\n| `aif`      | `llmf` `if` | Fast AI commit without confirmation | Rapid development |\n| `aip`      | `llmp` `ip` | AI commit and push | AI-powered deployment |\n| `aifp`     | `llmfp` `ifp` | Fast AI commit with push | Complete AI workflow |\n| `ais`      | `llms` `is` | AI summary with manual type/scope | Controlled AI assistance |\n| `aim`      | `llmm` `im` | AI multiline commit message | Detailed AI documentation |\n| `fixup`    | `fix` `x`   | Create fixup commit for rebase | Code review fixes |\n| `fixupp`   | `fixp` `xp` | Fixup commit and push | Remote fixup commits |\n| `fastfix`  | `fx`         | Fast fixup all files | Quick fixup workflow |\n| `fastfixp` | `fxp`        | Fast fixup and push | Complete fixup deployment |\n| `amend`    | `am` `a`    | Add files to last commit | Forgot to include files |\n| `amendf`   | `amf` `af`  | Amend with all files | Complete last commit |\n| `last`     | `l`          | Change last commit message | Fix commit message typos |\n| `revert`   | `rev`        | Revert selected commit | Undo problematic changes |\n\n### `gitb push \u003cmode\u003e`\n\n| **Mode**  | **Short** | **Description** | **When to Use** |\n|-----------|-----------|-----------------|-----------------|\n| `\u003cempty\u003e` |           | Show commits and push with conflict handling | Regular push workflow |\n| `yes`     | `y`       | Push without confirmation | Automated scripts |\n| `force`   | `f`       | Force push (use with caution) | After rebase/amend |\n| `list`    | `log` `l` | Show unpushed commits only | Review before push |\n\n### `gitb pull \u003cmode\u003e`\n\n| **Mode**      | **Short**  | **Description** | **Best For** |\n|---------------|------------|-----------------|--------------|\n| `\u003cempty\u003e`     |            | Smart pull with strategy selection | Daily workflow |\n| `fetch`       | `fe`       | Fetch only, no merge | Review changes first |\n| `all`         | `fa`       | Fetch all branches | Sync repository |\n| `upd`         | `u`        | Update all remote references | Branch cleanup |\n| `ffonly`      | `ff`       | Fast-forward only merge | Linear history |\n| `merge`       | `m`        | Always create merge commit | Feature branches |\n| `rebase`      | `r`        | Rebase current branch | Clean history |\n| `interactive` | `ri` `rs` | Interactive rebase with autosquash | Commit cleanup |\n\n### `gitb branch \u003cmode\u003e`\n\n| **Mode**  | **Short**  | **Description** | **Use Case** |\n|-----------|------------|-----------------|--------------|\n| `\u003cempty\u003e` |            | Interactive branch selection | Switch branches |\n| `list`    | `l`        | Show local branches | Branch overview |\n| `remote`  | `re` `r`  | Switch to remote branch | Work on others' branches |\n| `main`    | `def` `m` | Quick switch to main | Back to main branch |\n| `new`     | `n` `c`   | Create branch from current | Feature from current state |\n| `newd`    | `nd`       | Create branch from updated main | New feature branch |\n| `delete`  | `del` `d` | Delete local branch | Cleanup merged branches |\n\n### `gitb tag \u003cmode\u003e`\n\n| **Mode**     | **Short**       | **Description** | **Perfect For** |\n|--------------|-----------------|---------------------------------------------------------|-----------------|\n| `\u003cempty\u003e`    |                 | Create new tag from last commit | Quick releases |\n| `annotated`  | `a` `an`       | Create annotated tag with message | Official releases |\n| `commit`     | `c` `co` `cm` | Create tag from selected commit | Retrospective tagging |\n| `all`        | `al`            | Create annotated tag from selected commit | Complex releases |\n| `push`       | `ps` `ph` `p` | Push local tag to remote | Deploy releases |\n| `push-all`   | `pa`            | Push all tags to remote | Sync all releases |\n| `delete`     | `del` `d`      | Delete local tag | Fix tag mistakes |\n| `delete-all` | `da`            | Delete all local tags | Clean slate |\n| `list`       | `log` `l`      | Show local tags | Review releases |\n| `remote`     | `fetch` `r`    | Fetch and show remote tags | Check remote releases |\n\n### `gitb merge \u003cmode\u003e`\n\n| **Mode**  | **Short** | **Description** | **When to Use** |\n|-----------|-----------|-----------------------------------------------------------------|--------------|\n| `\u003cempty\u003e` |           | Select branch to merge with conflict resolution | Feature integration |\n| `main`    | `m`       | Merge main into current branch | Update feature branch |\n| `to-main` | `tm`      | Switch to main and merge current branch | Complete feature |\n\n### `gitb rebase \u003cmode\u003e`\n\n| **Mode**      | **Short**           | **Description** | **Best For** |\n|---------------|---------------------|-------------------------------------------------------------------------------|--------------|\n| `\u003cempty\u003e`     |                     | Select base branch for rebase | Branch updates |\n| `main`        | `m`                 | Rebase current branch onto main | Linear history |\n| `interactive` | `i`                 | Interactive rebase from selected commit | History editing |\n| `autosquash`  | `a` `s` `f` `ia` | Interactive rebase with fixup commits | Clean commit history |\n\n### `gitb reset \u003cmode\u003e`\n\n| **Mode**      | **Short** | **Description** | **Use Case** |\n|---------------|-----------|-------------------------------------------------------------------------|--------------|\n| `\u003cempty\u003e`     |           | Reset last commit (mixed mode) | Undo last commit, keep changes |\n| `soft`        | `s`       | Soft reset last commit | Redo commit message |\n| `undo`        | `u`       | Undo last reset operation | Recover from mistake |\n| `interactive` | `i`       | Select commit to reset to | Go back multiple commits |\n| `ref`         | `r`       | Reset to selected HEAD reference | Use reflog recovery |\n\n### `gitb stash \u003cmode\u003e`\n\n| **Mode**     | **Short** | **Description** | **Perfect For** |\n|--------------|-----------|-----------------|-----------------|\n| `\u003cempty\u003e`    |           | Interactive stash menu | Explore all options |\n| `select`     | `sel`     | Stash specific files | Partial work saving |\n| `all`        |           | Stash everything including untracked | Complete state save |\n| `list`       | `l`       | View all stashes | Find specific stash |\n| `pop`        | `p`       | Apply and remove stash | Continue work |\n| `show`       | `s`       | Preview stash contents | Check before apply |\n| `apply`      | `a`       | Apply without removing | Keep stash backup |\n| `drop`       | `d`       | Delete stash | Cleanup unused stashes |\n\n### `gitb hook \u003cmode\u003e`\n\n| **Mode**     | **Short**       | **Description** | **Use Case** |\n|--------------|-----------------|-----------------|--------------|\n| `\u003cempty\u003e`    |                 | Interactive action menu | Explore all operations |\n| `list`       | `l`             | Show all hooks with status | Audit current setup |\n| `create`     | `new` `c`       | Create new hook with templates | Set up automation |\n| `edit`       | `e`             | Edit existing hook | Modify behavior |\n| `toggle`     | `t`             | Enable/disable hook | Temporary control |\n| `remove`     | `rm` `r`        | Delete hook(s) | Cleanup |\n| `test`       | `run` `check`   | Test hook execution | Verify functionality |\n| `show`       | `cat` `view` `s`| Display hook contents | Review implementation |\n\n### `gitb config \u003cmode\u003e`\n\n| **Mode**    | **Short**               | **Description** | **Example** |\n|-------------|-------------------------|-------------------------------------------------------------|-------------|\n| `\u003cempty\u003e`   |                         | Show current gitbasher configuration | Check setup |\n| `user`      | `u` `name` `email`    | Set user name and email | Initial setup |\n| `default`   | `def` `d` `b` `main` | Set default branch name | Project standards |\n| `separator` | `sep` `s`              | Set branch name separator | Naming conventions |\n| `editor`    | `ed` `e`               | Set commit message editor | Personal preference |\n| `ticket`    | `ti` `t` `jira`       | Set ticket prefix for commits/branches | Issue tracking |\n| `scopes`    | `sc` `s`               | Set common scopes for commits | Project structure |\n| `ai`        | `llm` `key`            | Configure AI API key | Smart commits |\n| `proxy`     | `prx` `p`              | Set HTTP proxy for AI requests | Geographic restrictions |\n| `delete`    | `unset` `del`          | Remove global configuration | Reset settings |\n\n### `gitb log \u003cmode\u003e`\n\n| **Mode**      | **Short**     | **Description** | **Great For** |\n|---------------|---------------|-----------------------------------------------------------------------|--------------|\n| `\u003cempty\u003e`     |               | Pretty git log for current branch | Review recent work |\n| `branch`      | `b`           | Select branch to view log | Compare branches |\n| `compare`     | `comp` `c`    | Compare logs between two branches | Merge preparation |\n| `search`      | `s`           | Search commits with various criteria | Find specific changes |\n\n#### Log Search Options\n\n| **Search Mode** | **Short** | **Description** | **Example Use** |\n|-----------------|-----------|-----------------------------------------------------------------------|--------------|\n| `message`       | `msg` `m` | Search by commit message | Find feature commits |\n| `author`        | `a`       | Search by author name/email | Team member contributions |\n| `file`          | `f`       | Search commits affecting specific files | File history |\n| `content`       | `pickaxe` `p` | Search by added/removed content | Code archaeology |\n| `date`          | `d`       | Search within date range | Release timeframes |\n| `hash`          | `commit` `h` | Search by commit hash pattern | Specific commit lookup |\n\n\n## Troubleshooting \u0026 FAQ\n\n### 📋 Common Issues \u0026 Solutions\n\n#### ❓ \"Command not found: gitb\"\n```bash\n# Check if gitb is installed\nwhich gitb\n\n# If not found, reinstall\nGITB_PATH=/usr/local/bin/gitb \u0026\u0026 \\\ncurl -SL https://github.com/maxbolgarin/gitbasher/releases/latest/download/gitb -o $GITB_PATH \u0026\u0026 \\\nchmod +x $GITB_PATH\n\n# Alternative: Install to user directory\nmkdir -p ~/.local/bin\nGITB_PATH=~/.local/bin/gitb \u0026\u0026 \\\ncurl -SL https://github.com/maxbolgarin/gitbasher/releases/latest/download/gitb -o $GITB_PATH \u0026\u0026 \\\nchmod +x $GITB_PATH\n# Add to PATH: echo 'export PATH=\"$HOME/.local/bin:$PATH\"' \u003e\u003e ~/.bashrc\n```\n\n#### ❓ \"Permission denied\" when installing\n```bash\n# Use sudo for system-wide installation\nsudo curl -SL https://github.com/maxbolgarin/gitbasher/releases/latest/download/gitb -o /usr/local/bin/gitb\nsudo chmod +x /usr/local/bin/gitb\n\n# Or install to user directory (no sudo needed)\nmkdir -p ~/.local/bin\ncurl -SL https://github.com/maxbolgarin/gitbasher/releases/latest/download/gitb -o ~/.local/bin/gitb\nchmod +x ~/.local/bin/gitb\n```\n\n#### ❓ AI features not working\n```bash\n# Check if API key is configured\ngitb cfg\n\n# Set up API key\ngitb cfg ai\n\n# Test with a simple commit\necho \"test\" \u003e\u003e test.txt\ngit add test.txt\ngitb c ai\n\n# If in restricted region, set up proxy\ngitb cfg proxy\n# Example: http://proxy.example.com:8080\n```\n\n#### ❓ \"Bad substitution\" or bash errors\n```bash\n# Check bash version (needs 4.0+)\nbash --version\n\n# macOS: Install newer bash (and Homebrew if needed)\n# 1) Install Homebrew (if missing):\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n# 2) Install bash:\nbrew install bash\n# 3) Optional: make it your default shell (restart Terminal after):\nsudo sh -c 'echo /opt/homebrew/bin/bash \u003e\u003e /etc/shells' \u0026\u0026 chsh -s /opt/homebrew/bin/bash\n\n# Ubuntu/Debian: upgrade bash\nsudo apt update \u0026\u0026 sudo apt install --only-upgrade bash\n```\n\n#### ❓ Git operations fail\n```bash\n# Check git version (needs 2.23+)\ngit --version\n\n# Update git\n# macOS: brew install git\n# Ubuntu: sudo apt install git\n# Or download from: https://git-scm.com/downloads\n```\n\n### 🔧 System Requirements\n\n| **System** | **Bash** | **Git** | **Installation Method** |\n|------------|----------|---------|------------------------|\n| **Linux** | 4.0+ | 2.23+ | `apt install bash git` |\n| **macOS** | 4.0+ | 2.23+ | `brew install bash git` |\n| **Windows** | WSL | WSL | `wsl --install` then Linux steps |\n\n### 💡 Pro Tips\n\n#### 🎯 **Workflow Optimization**\n```bash\n# Set up aliases for even faster usage\necho 'alias gc=\"gitb c\"' \u003e\u003e ~/.bashrc\necho 'alias gp=\"gitb p\"' \u003e\u003e ~/.bashrc\necho 'alias gpu=\"gitb pu\"' \u003e\u003e ~/.bashrc\necho 'alias gb=\"gitb b\"' \u003e\u003e ~/.bashrc\n```\n\n### 🆘 **Still Having Issues?**\n\n**Ask for help**: [Open an issue](https://github.com/maxbolgarin/gitbasher/issues) or contact [@maxbolgarin](https://t.me/maxbolgarin)\n\n### 🗑️ **Uninstall**\n\n```bash\n# Remove gitbasher\nsudo rm /usr/local/bin/gitb\n# or\nrm ~/.local/bin/gitb\n\n# Remove configuration (optional)\nrm -rf ~/.gitbasher\n```\n\n\n## Roadmap for v4\n\n1. Add support of multi modes, e.g. `gitb c fastp` -\u003e `gitb c fast push` to prevent from a lot of modes to support all combinations\n2. Add more interactive menus, because it is difficult to remember all commands and modes\n3. Add better error messages and settings for verbosity\n4. Add more AI APIs providers\n\n## Testing\n\n**gitbasher** includes a comprehensive test suite using [BATS (Bash Automated Testing System)](https://github.com/bats-core/bats-core) to ensure code quality and prevent regressions during refactoring.\n\n### Running Tests\n\n```bash\n# Run all tests\nmake test\n\n# Run a specific test file\nmake test-file FILE=test_sanitization.bats\n\n# Or use the test runner directly\ncd tests\n./run_tests.sh\n```\n\n### Test Coverage\n\n- **115+ tests** across multiple test files\n- Input sanitization (security-critical)\n- Git operations (commit, push, pull, merge, rebase)\n- Branch management\n- Common utilities\n\nSee [tests/README.md](tests/README.md) for detailed testing documentation.\n\n## Contributing\n\nIf you'd like to contribute to **gitbasher**, make a fork and submit a pull request. You also can open an issue or text me on Telegram: https://t.me/maxbolgarin\n\n### Development Workflow\n\n1. Fork the repository\n2. Create a feature branch\n3. **Write tests first** for new functionality\n4. Implement your changes\n5. Run tests: `make test`\n6. Ensure all tests pass\n7. Submit a pull request\n\n#### Maintainers\n\n* [maxbolgarin](https://github.com/maxbolgarin)\n\n#### License\n\nThe source code license is MIT, as described in the [LICENSE](./LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbolgarin%2Fgitbasher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxbolgarin%2Fgitbasher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbolgarin%2Fgitbasher/lists"}