git-workflow-mastery

Advanced Git workflows, branching strategies, and commit conventions

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "git-workflow-mastery" with this command: npx skills add autohandai/community-skills/autohandai-community-skills-git-workflow-mastery

Git Workflow Mastery

Branching Strategies

GitHub Flow (Simple)

main ────●────●────●────●────●────
              \         /
feature        ●───●───●

Best for: Continuous deployment, small teams

Git Flow (Structured)

main    ────●─────────────────●────
             \               /
release       ●─────●───────●
               \   /
develop ────●───●───●───●───●────
             \     /
feature       ●───●

Best for: Scheduled releases, larger teams

Branch Naming

# Feature branches
feature/user-authentication
feature/JIRA-123-add-login

# Bug fixes
fix/login-redirect-loop
fix/JIRA-456-null-pointer

# Releases
release/v1.2.0
release/2024-q1

# Hotfixes
hotfix/security-patch
hotfix/v1.2.1

Commit Messages

Conventional Commits

<type>(<scope>): <description>

[optional body]

[optional footer(s)]

Types

feat:     # New feature
fix:      # Bug fix
docs:     # Documentation only
style:    # Formatting, no code change
refactor: # Code change without feature/fix
perf:     # Performance improvement
test:     # Adding/updating tests
chore:    # Build process, dependencies
ci:       # CI configuration
revert:   # Revert previous commit

Examples

# Simple
feat(auth): add OAuth2 login support

# With body
fix(api): handle null response from external service

The external payment API occasionally returns null
instead of an error object. Added defensive check.

Fixes #234

# Breaking change
feat(api)!: change response format to JSON:API

BREAKING CHANGE: All API responses now follow JSON:API spec.
Clients need to update their parsers.

Common Operations

Interactive Rebase

# Squash last 3 commits
git rebase -i HEAD~3

# In editor:
pick abc1234 First commit
squash def5678 Second commit
squash ghi9012 Third commit

Cherry Pick

# Apply specific commit to current branch
git cherry-pick abc1234

# Cherry pick range
git cherry-pick abc1234..def5678

Stashing

# Save work in progress
git stash push -m "WIP: feature login"

# List stashes
git stash list

# Apply and remove
git stash pop

# Apply specific stash
git stash apply stash@{2}

Undoing Changes

# Undo last commit (keep changes)
git reset --soft HEAD~1

# Undo last commit (discard changes)
git reset --hard HEAD~1

# Undo a pushed commit (new revert commit)
git revert abc1234

# Discard all local changes
git checkout -- .
git clean -fd

Advanced Techniques

Bisect (Find Bug Introduction)

git bisect start
git bisect bad           # Current commit is broken
git bisect good v1.0.0   # Known good commit

# Git checks out middle commit
# Test and mark:
git bisect good  # or
git bisect bad

# Continue until bug found
git bisect reset

Reflog (Recover Lost Commits)

# View reflog
git reflog

# Recover deleted branch
git checkout -b recovered-branch abc1234

# Undo hard reset
git reset --hard HEAD@{2}

Worktrees (Multiple Working Directories)

# Create worktree for feature branch
git worktree add ../feature-branch feature/new-ui

# List worktrees
git worktree list

# Remove worktree
git worktree remove ../feature-branch

Hooks

Pre-commit Hook

#!/bin/sh
# .git/hooks/pre-commit

# Run linter
npm run lint
if [ $? -ne 0 ]; then
  echo "Lint failed. Commit aborted."
  exit 1
fi

# Run tests
npm test
if [ $? -ne 0 ]; then
  echo "Tests failed. Commit aborted."
  exit 1
fi

Commit-msg Hook

#!/bin/sh
# .git/hooks/commit-msg

# Validate conventional commit format
commit_regex='^(feat|fix|docs|style|refactor|perf|test|chore|ci|revert)(\(.+\))?: .{1,72}'

if ! grep -qE "$commit_regex" "$1"; then
  echo "Invalid commit message format."
  echo "Use: type(scope): description"
  exit 1
fi

Git Aliases

# ~/.gitconfig
[alias]
  co = checkout
  br = branch
  ci = commit
  st = status
  lg = log --oneline --graph --decorate
  undo = reset --soft HEAD~1
  amend = commit --amend --no-edit
  wip = !git add -A && git commit -m 'WIP'
  sync = !git fetch origin && git rebase origin/main

Best Practices

  1. Commit early, commit often - Small, focused commits
  2. Write meaningful commit messages - Explain why, not just what
  3. Keep main/master deployable - Always in working state
  4. Review before merging - Use pull requests
  5. Delete merged branches - Keep repository clean
  6. Never rewrite shared history - No force push to shared branches
  7. Use tags for releases - Semantic versioning

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

tailwind-ui-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

typescript-refactoring-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-fastapi-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
General

api-design-restful

No summary provided by upstream source.

Repository SourceNeeds Review