pluginagentmarketplace

git-version-control

Git workflows, branching strategies, collaboration, and code management

pluginagentmarketplace 5 1 Updated 9mo ago

Resources

3
GitHub

Install

npx skillscat add pluginagentmarketplace/custom-plugin-data-engineer/git-version-control

Install via the SkillsCat registry.

About this skill

This skill covers Git workflows, branching strategies, and collaborative code management practices. It provides structured approaches to version control, including feature branching, GitFlow, and trunk-based development, along with commit conventions. It solves problems related to code coordination, merge conflicts, and deployment readiness in team environments. Developers should use it when implementing collaborative projects requiring version control best practices.

SKILL.md

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