Back to skills
extension
Category: Development & EngineeringNo API key required

git-operations

Git command procedures for branch management, commits, and worktrees.

personAuthor: jakexiaohubgithub

Git Operations Skill

Git command procedures for branch management, commits, and worktrees.

When Used

| Agent | Phase | | --------- | ----------- | | git-agent | All actions |

CLI Tools

All operations use native git and GitHub CLI (gh):

# Verify gh CLI is authenticated
gh auth status

# If not authenticated, run:
gh auth login

Note: The github MCP server has been replaced with gh CLI commands. See pr-operations skill for PR-related commands.

Procedures

1. Status

Show current git state:

git status
git log --oneline -5
git branch -vv

Output: Current branch, uncommitted changes, recent commits.


2. Branch Create

Create and switch to a new branch:

git checkout -b <type>/<name>

Branch Types:

| Prefix | Use For | Example | | ----------- | ----------------- | ------------------------ | | feature/ | New features | feature/prompt-manager | | fix/ | Bug fixes | fix/auth-timeout | | refactor/ | Code improvements | refactor/api-cleanup | | docs/ | Documentation | docs/api-reference |

Validation:

  • Never create branch from dirty working directory
  • Always branch from up-to-date main
git fetch origin
git checkout main
git pull origin main
git checkout -b <type>/<name>

3. Branch Switch

Switch to an existing branch:

git checkout <branch>

With uncommitted changes:

# Option 1: Stash changes
git stash
git checkout <branch>

# Option 2: Commit first
git add <files>
git commit -m "wip: save progress"
git checkout <branch>

4. Sync with Main

Update current branch with latest main:

git fetch origin
git rebase origin/main

On conflict:

# Fix conflicts in files
git add <resolved-files>
git rebase --continue

If rebase is problematic:

git rebase --abort
git merge origin/main

5. Commit

Create a conventional commit:

# Stage specific files (never use -A or .)
git add <file1> <file2>

# Commit with message
git commit -m "<type>: <description>

<optional body>

Co-Authored-By: Claude <noreply@anthropic.com>"

Commit Types:

| Type | Use For | | ---------- | --------------------------------------- | | feat | New feature | | fix | Bug fix | | refactor | Code change that neither fixes nor adds | | docs | Documentation only | | test | Adding or updating tests | | chore | Maintenance, dependencies |

Pre-commit checks:

pnpm lint && pnpm typecheck

6. Worktree Add

Create a new worktree for parallel development:

# Create worktree with new branch
git worktree add ../<repo>--<feature> -b feature/<feature>

# Create worktree from existing branch
git worktree add ../<repo>--<feature> feature/<feature>

Example:

git worktree add ../react-basecamp--prompt-manager -b feature/prompt-manager

Directory structure:

~/basecamp/
├── react-basecamp/                  # Main worktree (main branch)
├── react-basecamp--prompt-manager/  # Worktree for feature
└── react-basecamp--other-feature/   # Another worktree

7. Worktree Remove

Remove a worktree when done:

git worktree remove ../<repo>--<feature>

If worktree has uncommitted changes:

# Force remove (discards changes)
git worktree remove --force ../<repo>--<feature>

# Or commit/stash changes first
cd ../<repo>--<feature>
git stash
cd ../<repo>
git worktree remove ../<repo>--<feature>

8. Worktree List

Show all worktrees:

git worktree list

9. Cleanup

Delete merged branches:

# Delete local merged branches
git branch --merged main | grep -v "main" | xargs -r git branch -d

# Prune remote-tracking branches
git fetch --prune

Error Handling

| Error | How to Handle | | ----------------- | ---------------------------------------- | | Merge conflict | Resolve manually, then continue | | Dirty working dir | Stash or commit before switching | | Branch exists | Check if intentional, use different name | | Worktree locked | Remove lock file or use --force |

Output

Return operation result:

## Git Operation: <action>

**Status:** SUCCESS / FAILED

**Details:**

- <operation-specific details>

**Current State:**

- Branch: `feature/prompt-manager`
- Uncommitted: 0 files