Git Workflows
Comprehensive git workflow skill for commits, pull requests, branching, and changelog generation.
Commit Message Format
Conventional Commits
Part Purpose Example
Type Category of change feat , fix , docs
Scope Affected component (auth) , (api)
Subject Brief description add OAuth2 login
Body Details (optional) Why + what changed
Footer References Closes #123
Commit Types
Type When to Use
feat New feature
fix Bug fix
docs Documentation only
style Formatting (no code change)
refactor Code restructuring
test Adding/updating tests
chore Maintenance, deps
perf Performance improvement
Commit Analysis Workflow
-
Run git diff --staged to see changes
-
Identify change type (feat, fix, etc.)
-
Determine scope (affected component)
-
Write concise subject (< 50 chars)
-
Add body if context needed
Pull Request Structure
PR Template Elements
Section Content
Summary What this PR does (1-2 sentences)
Changes Bullet list of specific changes
Testing How changes were tested
Screenshots If UI changes
Checklist Tests pass, docs updated
PR Analysis Workflow
-
List commits: git log main..HEAD --oneline
-
Identify themes across commits
-
Note any breaking changes
-
Check test coverage
-
Review documentation needs
Branch Strategies
Git Flow
Branch Purpose
main Production code
develop Integration branch
feature/ New features
release/ Release preparation
hotfix/ Production fixes
GitHub Flow
Branch Purpose
main Always deployable
feature branches Short-lived work
Trunk-Based
Branch Purpose
main All development
Short branches < 1 day
Feature flags Incomplete work
Branch Naming
Pattern Example
Feature feature/ABC-123-add-user-auth
Bugfix bugfix/ABC-456-fix-login
Hotfix hotfix/critical-security-patch
Release release/v1.2.0
Changelog Format
Keep a Changelog Structure
Section Content
Added New features
Changed Changes in existing functionality
Deprecated Soon-to-be removed features
Removed Removed features
Fixed Bug fixes
Security Security fixes
Changelog Generation Workflow
-
Get commits since last release tag
-
Parse commit messages for type/scope
-
Group by category (Added, Fixed, etc.)
-
Format with links to issues/PRs
Best Practices
Commits
Practice Why
Atomic commits One logical change per commit
Clear messages Explain why, not just what
Reference issues Link to related tickets
Sign commits GPG verification
Pull Requests
Practice Why
Small PRs < 400 lines ideal for review
Clear title Summarize the change
Self-review first Check diff before requesting
Respond promptly Address feedback quickly
Branches
Practice Why
Short-lived Merge within days
Up to date Rebase regularly
Clean history Squash before merge
Delete after merge Keep repo clean
Merge Strategies
Strategy When to Use Result
Merge commit Preserve history Merge commit node
Squash Clean up messy history Single commit
Rebase Linear history No merge commit
Fast-forward Simple, linear No merge commit
Key concept: Squash for feature branches with messy commits. Rebase for clean linear history. Merge commit when branch history matters.
Common Git Commands
Pre-Commit
Command Purpose
git status
See staged/unstaged changes
git diff --staged
Review what will be committed
git add -p
Interactive staging
Commit
Command Purpose
git commit -m "msg"
Commit with message
git commit --amend
Fix last commit (before push)
Branch Management
Command Purpose
git branch -d name
Delete merged branch
git fetch --prune
Remove stale remotes
git rebase main
Update branch with main
PR Workflow
Command Purpose
git push -u origin branch
Push and set upstream
gh pr create
Create PR via CLI
gh pr merge
Merge PR via CLI
Resources
-
Conventional Commits: https://www.conventionalcommits.org/
-
Keep a Changelog: https://keepachangelog.com/
-
Git Book: https://git-scm.com/book