home / skills / pluginagentmarketplace / custom-plugin-data-engineer / git-version-control

git-version-control skill

/skills/git-version-control

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

Review the files below or copy the command above to add this skill to your agents.

Files (6)
SKILL.md
5.6 KB
---
name: git-version-control
description: Git workflows, branching strategies, collaboration, and code management
sasmp_version: "1.3.0"
bonded_agent: 03-devops-engineer
bond_type: SECONDARY_BOND
skill_version: "2.0.0"
last_updated: "2025-01"
complexity: foundational
estimated_mastery_hours: 40
prerequisites: []
unlocks: [cicd-pipelines, api-development]
---

# Git & Version Control

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

## Quick Start

```bash
# Initialize and configure
git init
git config user.name "Developer Name"
git config user.email "[email protected]"

# 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

```bash
# 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

```bash
# 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

```bash
# 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

```bash
# 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

```bash
#!/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

```bash
# ✅ 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

- [Pro Git Book](https://git-scm.com/book/en/v2)
- [Conventional Commits](https://www.conventionalcommits.org/)
- [Git Flight Rules](https://github.com/k88hudson/git-flight-rules)

---

**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