Git is powerful but can become chaotic without conventions. Good workflows reduce conflicts, enable collaboration, and make history meaningful. AI can help you adopt and maintain effective Git practices.
Branching Strategies#
GitHub Flow (Recommended for Most Teams)#
main (always deployable)
│
├── feature/user-auth
│ └── PR → main
│
├── feature/payment-integration
│ └── PR → main
│
└── fix/login-bug
└── PR → main
Rules:
mainis always deployable- Branch from
mainfor any change - Open PR for review
- Merge to
mainand deploy
GitFlow (For Scheduled Releases)#
main ─────────────────────────────────────────
│ ▲
│ │ (release merge)
develop ──────────────────────────────────────
│ │ ▲
│ │ │ (feature merge)
feature/a feature/b ───┘
When to use: Mobile apps, versioned products, regulated industries.
Trunk-Based Development#
main ──●──●──●──●──●──●──●──●──●──
│ │ │ │ │ │ │ │ │
└──┴──┴──┴──┴──┴──┴──┴──┘
(small, frequent commits)
Rules:
- Commit directly to
main(or very short-lived branches) - Use feature flags for incomplete work
- Deploy continuously
Commit Best Practices#
Commit Message Format#
type(scope): subject
body (optional)
footer (optional)
Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formattingrefactor: Code restructuringtest: Adding testschore: Maintenance
Examples:
feat(auth): add OAuth2 Google login
Implements Google OAuth2 flow with token refresh.
Stores tokens securely in encrypted session.
Closes #123
fix(cart): prevent negative quantities
Users could enter negative numbers in quantity input,
resulting in negative totals. Added validation.
Atomic Commits#
Each commit should be a single logical change:
Interactive Rebase for Clean History#
Pull Request Practices#
PR Template#
PR Size Guidelines#
Small PR (Ideal):
- < 200 lines changed
- Single concern
- Reviewable in 15 minutes
Medium PR (Acceptable):
- 200-500 lines
- Related changes
- Reviewable in 30 minutes
Large PR (Avoid):
- > 500 lines
- Consider splitting
- Hard to review thoroughly
Review Etiquette#
As Author:
- Respond to all comments
- Don't take feedback personally
- Explain decisions when asked
As Reviewer:
- Be constructive, not critical
- Suggest, don't demand
- Approve when "good enough"
Handling Common Scenarios#
Merge vs Rebase#
Use merge when: Preserving context matters, shared branches Use rebase when: Clean history desired, personal branches
Resolving Conflicts#
Recovering from Mistakes#
Stashing Work#
Advanced Patterns#
Git Hooks#
With Husky:
Bisect for Bug Finding#
Worktrees for Parallel Work#
Team Conventions#
Branch Naming#
feature/TICKET-123-user-authentication
fix/TICKET-456-login-redirect
hotfix/critical-security-patch
docs/update-api-documentation
refactor/extract-payment-service
Protected Branches#
Code Owners#
# .github/CODEOWNERS
*.js @frontend-team
*.ts @frontend-team
/api/** @backend-team
/infrastructure/** @platform-team
*.md @docs-team
Conclusion#
Good Git practices make collaboration smoother and history meaningful. Choose a workflow that fits your team, enforce it with automation, and document conventions clearly.
AI helps write better commit messages, resolve conflicts, and understand complex Git operations. The investment in Git hygiene pays dividends in easier debugging, cleaner reviews, and smoother onboarding.