AGENT LAB: SKILLS
skills/aj-geddes/useful-ai-prompts/git-workflow-strategy

git-workflow-strategy

SKILL.md

Git Workflow Strategy

Overview

Establish efficient Git workflows that support team collaboration, code quality, and deployment readiness through structured branching strategies and merge patterns.

When to Use

  • Team collaboration setup
  • Release management
  • Feature development coordination
  • Hotfix procedures
  • Code review processes
  • CI/CD integration planning

Implementation Examples

1. GitFlow Workflow Setup

# Initialize GitFlow
git flow init -d

# Start a feature
git flow feature start new-feature
# Work on feature
git add .
git commit -m "feat: implement new feature"
git flow feature finish new-feature

# Start a release
git flow release start 1.0.0
# Update version numbers, changelog
git add .
git commit -m "chore: bump version to 1.0.0"
git flow release finish 1.0.0

# Create hotfix
git flow hotfix start 1.0.1
# Fix critical bug
git add .
git commit -m "fix: critical bug in production"
git flow hotfix finish 1.0.1

2. GitHub Flow Workflow

# Clone and setup
git clone https://github.com/org/repo.git
cd repo

# Create feature branch from main
git checkout -b feature/add-auth-service
git add .
git commit -m "feat: add authentication service"
git push origin feature/add-auth-service

# Push changes, create PR, request reviews
# After approval and CI passes, merge to main
git checkout main
git pull origin main
git merge feature/add-auth-service
git push origin main

# Deploy and cleanup
git branch -d feature/add-auth-service
git push origin -d feature/add-auth-service

3. Trunk-Based Development

# Create short-lived feature branch
git checkout -b feature/toggle-feature
# Keep commits small and atomic
git add specific_file.js
git commit -m "feat: add feature flag configuration"

# Rebase on main frequently
git fetch origin
git rebase origin/main

# Create PR with small changeset
git push origin feature/toggle-feature

# After PR merge, delete branch
git checkout main
git pull origin main
git branch -d feature/toggle-feature

4. Git Configuration for Workflows

# Configure user
git config --global user.name "Developer Name"
git config --global user.email "dev@example.com"

# Set default branch
git config --global init.defaultBranch main

# Configure merge strategy
git config --global pull.ff only
git config --global merge.ff false

# Enable rerere (reuse recorded resolution)
git config --global rerere.enabled true

# Configure commit message format
git config --global commit.template ~/.gitmessage

# Setup branch protection rules
git config --global branch.main.rebase true
git config --global branch.develop.rebase true

5. Branch Naming Conventions

# Feature branches
git checkout -b feature/user-authentication
git checkout -b feature/JIRA-123-payment-integration

# Bug fix branches
git checkout -b bugfix/JIRA-456-login-timeout
git checkout -b fix/null-pointer-exception

# Release branches
git checkout -b release/v2.1.0
git checkout -b release/2024-Q1

# Hotfix branches
git checkout -b hotfix/critical-security-patch
git checkout -b hotfix/v2.0.1

# Chore branches
git checkout -b chore/update-dependencies
git checkout -b chore/refactor-auth-module

6. Merge Strategy Script

#!/bin/bash
# merge-with-strategy.sh

BRANCH=$1
STRATEGY=${2:-"squash"}

if [ -z "$BRANCH" ]; then
    echo "Usage: ./merge-with-strategy.sh <branch> [squash|rebase|merge]"
    exit 1
fi

# Update main
git checkout main
git pull origin main

case "$STRATEGY" in
    squash)
        git merge --squash origin/$BRANCH
        git commit -m "Merge $BRANCH"
        ;;
    rebase)
        git rebase origin/$BRANCH
        ;;
    merge)
        git merge --no-ff origin/$BRANCH
        ;;
    *)
        echo "Unknown strategy: $STRATEGY"
        exit 1
        ;;
esac

git push origin main
git push origin -d $BRANCH

7. Collaborative Workflow with Code Review

# Developer creates feature
git checkout -b feature/search-optimization
# Make changes
git add .
git commit -m "perf: optimize search algorithm"
git push origin feature/search-optimization

# Create pull request with detailed description
# Reviewer reviews and suggests changes

# Developer makes requested changes
git add .
git commit -m "refactor: improve search efficiency per review"
git push origin feature/search-optimization

# After approval
git checkout main
git pull origin main
git merge feature/search-optimization
git push origin main

# Cleanup
git branch -d feature/search-optimization
git push origin -d feature/search-optimization

Best Practices

✅ DO

  • Choose workflow matching team size and release cycle
  • Keep feature branches short-lived (< 3 days)
  • Use descriptive branch names with type prefix
  • Require code review before merging to main
  • Enforce protection rules on main/release branches
  • Rebase frequently to minimize conflicts
  • Write atomic, logical commits
  • Keep commit messages clear and consistent

❌ DON'T

  • Commit directly to main branch
  • Create long-lived feature branches
  • Use vague branch names (dev, test, temp)
  • Merge without code review
  • Mix multiple features in one branch
  • Force push to shared branches
  • Ignore failing CI checks
  • Merge with merge commits in TBD

Branch Protection Rules (GitHub)

# .github/branch-protection-rules.yml
branches:
  main:
    required_status_checks: true
    required_code_review: true
    dismiss_stale_reviews: true
    require_branches_up_to_date: true
    enforce_admins: true
    required_signatures: false

Resources

Weekly Installs
70
First Seen
Jan 21, 2026
Installed on
claude-code58
opencode53
gemini-cli49
codex49
antigravity45
cursor44