Skip to content
Skillpedia
Deploy & cloud (DevOps)280k · #60

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

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/git-workflow/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/git-workflow/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
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-workflow

Or download just the file:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/git-workflow/SKILL.md -o SKILL.md
Technical 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:

  • main is 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 main or 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:

  • main contains production-ready code only
  • develop is the integration branch
  • Feature branches from develop, merge back to develop
  • Release branches from develop, merge to main and develop
  • Hotfix branches from main, merge to both main and develop

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

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills