git-workflow
Defines efficient Git workflows, including branching strategies, commit conventions, and conflict resolution.
What it does
This guide teaches best practices for using Git, a version control system. It explains how to organize your code's history, write clear messages for your changes, and choose the best way to work in a team.
When to use it
- ✓When starting a new project and defining how the code will be managed.
- ✓When deciding which code organization strategy (like GitHub Flow or GitFlow) to use.
- ✓When writing messages to describe the changes made to the code.
Example of what to ask your AI
“How can I organize my project using Git Flow?”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
It offers different organization models, like GitHub Flow (simple and good for most) and GitFlow (more complex, for projects with planned releases). It also teaches how to write 'commit' messages following a clear pattern.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add affaan-m/ECC --skill git-workflowOr download just the file:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/git-workflow/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
Git Workflow Patterns
Best practices for Git version control, branching strategies, and collaborative development.
When to Activate
- Setting up Git workflow for a new project
- Deciding on branching strategy (GitFlow, trunk-based, GitHub flow)
- Writing commit messages and PR descriptions
- Resolving merge conflicts
- Managing releases and version tags
- Onboarding new team members to Git practices
Branching Strategies
GitHub Flow (Simple, Recommended for Most)
Best for continuous deployment and small-to-medium teams.
main (protected, always deployable)
│
├── feature/user-auth → PR → merge to main
├── feature/payment-flow → PR → merge to main
└── fix/login-bug → PR → merge to main
Rules:
mainis always deployable- Create feature branches from
main - Open Pull Request when ready for review
- After approval and CI passes, merge to
main - Deploy immediately after merge
Trunk-Based Development (High-Velocity Teams)
Best for teams with strong CI/CD and feature flags.
main (trunk)
│
├── short-lived feature (1-2 days max)
├── short-lived feature
└── short-lived feature
Rules:
- Everyone commits to
mainor very short-lived branches - Feature flags hide incomplete work
- CI must pass before merge
- Deploy multiple times per day
GitFlow (Complex, Release-Cycle Driven)
Best for scheduled releases and enterprise projects.
main (production releases)
│
└── develop (integration branch)
│
├── feature/user-auth
├── feature/payment
│
├── release/1.0.0 → merge to main and develop
│
└── hotfix/critical → merge to main and develop
Rules:
maincontains production-ready code onlydevelopis the integration branch- Feature branches from
develop, merge back todevelop - Release branches from
develop, merge tomainanddevelop - Hotfix branches from
main, merge to bothmainanddevelop
When to Use Which
| Strategy | Team Size | Release Cadence | Best For |
|---|---|---|---|
| GitHub Flow | Any | Continuous | SaaS, web apps, startups |
| Trunk-Based | 5+ experienced | Multiple/day | High-velocity teams, feature flags |
| GitFlow | 10+ | Scheduled | Enterprise, regulated industries |
Commit Messages
Conventional Commits Format
<type>(<scope>): <subject>
[optional body]
[optional footer(s)]
Types
| Type | Use For | Example |
|---|---|---|
feat |
New feature | feat(auth): add OAuth2 login |
fix |
Bug fix | fix(api): handle null response in user endpoint |
docs |
Documentation | docs(readme): update installation instructions |
style |
Formatting, no code change | style: fix indentation in login component |
refactor |
Code refactoring | refactor(db): extract connection pool to module |
test |
Adding/updating tests | test(auth): add unit tests for token validation |
chore |
Maintenance tasks | chore(deps): update dependencies |
perf |
Performance improvement | perf(query): add index to users table |
ci |
CI/CD changes | ci: add PostgreSQL service to test workflow |
revert |
Revert previous commit | revert: revert "feat(auth): add OAuth2 login" |
Good vs Bad Examples
# BAD: Vague, no context
git commit -m "fixed stuff"
git commit -m "updates"
git commit -m "WIP"
# GOOD: Clear, specific, explains why
git commit -m "fix(api): retry requests on 503 Service Unavailable
The external API occasionally returns 503 errors during peak hours.
Added exponential backoff retry logic with max 3 attempts.
Closes #123"
Commit Message Template
Create .gitmessage in repo root:
# <type>(<scope>): <subject>
# # Types: feat, fix, docs, style, refactor, test, chore, perf, ci, revert
# Scope: api, ui, db, auth, etc.
# Subject: imperative mood, no period, max 50 chars
#
# [optional body] - explain why, not what
# [optional footer] - Breaking changes, closes #issue
Enable with: git config commit.template .gitmessage
Merge vs Rebase
Merge (Preserves History)
# Creates a merge commit
git checkout main
git merge feature/user-auth
# Result:
# * merge commit
# |\
# | * feature commits
# |/
# * main commits
Use when:
- Merging feature branches into
main - You want to preserve exact history
- Multiple people worked on the branch
…
FAQ
What is a 'commit'?
A 'commit' is like a 'save' in your project, recording a set of changes made to the code at a specific point in time.
What's the difference between 'merge' and 'rebase'?
'Merge' combines the history of two branches, creating a record of when they were joined. 'Rebase' reorganizes your changes to make them look like they were made after the latest changes from another branch, creating a more linear history.
Why use 'Conventional Commits'?
It helps to quickly understand what each change does (whether it's a new feature, a bug fix, etc.) and makes it easier to automate tasks like generating release notes.
Details
Original description by the author
Git workflow patterns including branching strategies, commit conventions, keeping history clean and readable, tidying local commits before merging, merge vs rebase, conflict resolution, and collaborative development best practices for teams of all sizes. Use when choosing a branching strategy, writing commit conventions, cleaning up history before a pull request, deciding merge versus rebase, or r
repo: affaan-m/ECC
Popularity
- GitHub stars
- 280k
- Ranking position
- #60
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
accessibility
Helps your agent create interfaces that everyone can use. Ensures websites and apps work well for people with disabilities, like those who are blind or have reduced mobility.
affaan-m/ECC
agent-architecture-audit
Makes your agent check if everything is working correctly. It finds and fixes problems in AI systems, ensuring they perform as expected.
affaan-m/ECC
agent-eval
Helps your agent compare different AI coding tools. It measures which one is faster, cheaper, and more reliable for specific tasks.
affaan-m/ECC
agent-harness-construction
Makes your agent better understand how to perform tasks. It optimizes the tools and instructions the agent uses to increase its chances of success.
affaan-m/ECC
Similar skills
git-workflow-and-versioning
Organizes code work using Git. Helps save progress, manage different versions, and avoid conflicts when working in a team.
addyosmani/agent-skills
observability-and-instrumentation
Adds tools to monitor what the code does in production. Helps understand if something went wrong and why, making fixes easier.
addyosmani/agent-skills
github-pr-workflow
Prepares GitHub pull requests, ensuring code quality and documentation.
paperclipai/paperclip