git-version-control

pluginagentmarketplace's avatarfrom pluginagentmarketplace

Git workflows, branching, collaboration, and code management

⭐0stars🔀0forks📁View on GitHub🕐Updated Nov 19, 2025

When & Why to Use This Skill

This Claude skill provides a comprehensive framework for mastering production-grade Git workflows, branching strategies, and collaborative code management. It helps teams maintain high code quality and repository integrity by implementing standardized commit practices, advanced conflict resolution techniques, and automated pre-commit hooks, ultimately streamlining the software development lifecycle (SDLC).

Use Cases

  • Establishing standardized branching strategies such as GitFlow or Trunk-Based Development to balance feature velocity with production stability.
  • Enforcing clean and meaningful project histories using Conventional Commits and interactive rebasing for better auditability and automated changelog generation.
  • Resolving complex merge conflicts and performing advanced repository troubleshooting using tools like git reflog, bisect, and cherry-pick.
  • Automating local development workflows by configuring Git Hooks to run linters, type checkers, and unit tests before code is committed.
  • Optimizing collaborative development in multi-developer environments through efficient PR management and remote repository synchronization.
namegit-version-control
descriptionGit workflows, branching strategies, collaboration, and code management
sasmp_version"1.3.0"
bonded_agent03-devops-engineer
bond_typeSECONDARY_BOND
skill_version"2.0.0"
last_updated"2025-01"
complexityfoundational
estimated_mastery_hours40
prerequisites[]
unlocks[cicd-pipelines, api-development]

Git & Version Control

Production Git workflows, branching strategies, and collaborative development practices.

Quick Start

# Initialize and configure
git init
git config user.name "Developer Name"
git config user.email "dev@company.com"

# Daily workflow
git checkout -b feature/add-data-pipeline
git add .
git commit -m "feat: add ETL pipeline for customer data"
git push -u origin feature/add-data-pipeline

# Create pull request (GitHub CLI)
gh pr create --title "Add ETL pipeline" --body "Implements customer data ETL"

Core Concepts

1. Branching Strategies

# GitFlow
main           ──●──────────────────●──────────  # Production
                 │                  │
develop        ──●──●──●──────●──●──●──────────  # Integration
                    │   \    /
feature/x          ●────●──●                     # Features
                          │
release/1.0            ───●────                  # Release prep

# Trunk-Based Development (recommended for CI/CD)
main           ──●──●──●──●──●──●──●──●────────  # Always deployable
                 │  │     │     │
feature/*       ●  ●     ●     ●                 # Short-lived (1-2 days)

# Commands
git checkout -b feature/new-feature main
git push -u origin feature/new-feature
# After PR approval
git checkout main && git pull
git merge --squash feature/new-feature
git push origin main
git branch -d feature/new-feature

2. Commit Best Practices

# Conventional Commits format
# type(scope): description

git commit -m "feat(etl): add incremental load for orders table"
git commit -m "fix(api): handle null values in response"
git commit -m "docs(readme): update installation instructions"
git commit -m "refactor(pipeline): extract validation logic"
git commit -m "test(unit): add tests for data transformer"

# Types: feat, fix, docs, style, refactor, test, chore, perf

# Interactive rebase for clean history
git rebase -i HEAD~3
# pick -> squash commits, reword messages

# Amend last commit (before push)
git commit --amend -m "Updated message"

3. Resolving Conflicts

# Fetch and rebase (preferred over merge)
git fetch origin
git rebase origin/main

# If conflicts occur
# 1. Edit conflicted files
# 2. Mark as resolved
git add <resolved-files>
git rebase --continue

# Abort if needed
git rebase --abort

# Cherry-pick specific commits
git cherry-pick abc123

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

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

4. Advanced Operations

# Stash changes
git stash save "WIP: refactoring"
git stash list
git stash pop  # Apply and remove
git stash apply stash@{0}  # Apply but keep

# Bisect to find bug
git bisect start
git bisect bad HEAD
git bisect good v1.0.0
# Git checks out commits, you test
git bisect good  # or bad
git bisect reset

# Find commits by content
git log -S "function_name" --oneline
git log --grep="fix" --oneline

# Blame to find author
git blame -L 10,20 src/pipeline.py

# Clean untracked files
git clean -fd  # Remove untracked files and directories

Git Hooks

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

# Run linting
echo "Running linter..."
ruff check . || exit 1

# Run type checking
echo "Running type check..."
mypy src/ || exit 1

# Run tests
echo "Running tests..."
pytest tests/ -q || exit 1

echo "All checks passed!"

Tools & Technologies

Tool Purpose Version (2025)
Git Version control 2.43+
GitHub CLI GitHub operations 2.43+
pre-commit Git hooks framework 3.6+
Conventional Commits Commit standard -
GitLens VS Code extension Latest

Troubleshooting Guide

Issue Symptoms Root Cause Fix
Merge Conflict Can't merge/rebase Divergent changes Resolve manually, git add, continue
Detached HEAD Not on any branch Checked out commit git checkout main
Lost Commits Commits missing Reset/rebase git reflog, git cherry-pick
Large Repo Slow operations Large files Use Git LFS, clean history

Best Practices

# ✅ DO: Write meaningful commit messages
git commit -m "fix(etl): handle empty dataframes in transform step

Previously the pipeline would crash when receiving empty data.
Now it logs a warning and continues with the next batch."

# ✅ DO: Keep commits atomic and focused
# ✅ DO: Rebase feature branches before merging
# ✅ DO: Use .gitignore properly

# ❌ DON'T: Commit secrets or credentials
# ❌ DON'T: Force push to shared branches
# ❌ DON'T: Commit large binary files

Resources


Skill Certification Checklist:

  • Can use branching and merging effectively
  • Can write conventional commit messages
  • Can resolve merge conflicts
  • Can use interactive rebase
  • Can set up pre-commit hooks