Feature Branch Workflow Checklist: From Creation to Merge to Deletion

Published on
Written byChristoffer Artmann
Feature Branch Workflow Checklist: From Creation to Merge to Deletion

You're about to start a new feature. You know the general workflow—create a branch, write code, open a PR, merge—but you're not sure about all the details. Should you rebase or merge? When should you push? How do you know when the branch is truly ready to merge? What happens after merging?

Checklists turn vague knowledge into concrete action. They ensure you don't skip important steps when you're rushed or distracted. They help new team members learn your workflow quickly. They create consistency across a team, so everyone follows the same practices.

We're going to provide comprehensive checklists for the entire feature branch lifecycle: one for individual developers working on branches, and one for teams establishing feature branch processes. Use these as starting points, then customize them to match your team's specific needs.

Developer Checklist: Working with Feature Branches

This checklist guides individual developers through the complete lifecycle of a feature branch.

Before Creating Your Branch

[ ] Verify you're starting from the right place

# Ensure you're on main and it's current
git checkout main
git pull origin main

Starting from outdated main creates unnecessary divergence from the start. Always begin with current main.

[ ] Understand the scope of work

Be clear about what this branch should accomplish. Can you describe the feature or fix in one sentence? If not, consider whether the work should be split into multiple branches.

[ ] Check if related work exists

# Look for existing branches that might conflict
git branch -a | grep -i "authentication"

If someone else is working on related code, coordinate to avoid conflicting changes.

[ ] Create or reference an issue

Link your branch to a ticket, issue, or work item. This provides context for reviewers and creates traceability.

Creating Your Branch

[ ] Use clear, descriptive naming

# Follow your team's convention
git checkout -b feature/user-profile-editing

# Or with issue reference
git checkout -b feature/PROJ-123-user-profile-editing

Branch names should tell others what's inside without requiring further investigation.

[ ] Push the branch early

# Push even before first commit to establish remote tracking
git push -u origin feature/user-profile-editing

This establishes the remote branch, enables CI/CD, and signals to teammates what you're working on.

[ ] Open a draft pull request (optional but recommended)

Create a draft PR immediately. This makes your work visible, allows early feedback, and lets CI start running.

During Development

[ ] Make small, focused commits

# Good: Atomic commit
git add auth/validator.js
git commit -m "Add email format validation"

# Bad: Massive commit
git add .
git commit -m "Bunch of stuff"

Small commits are easier to review, revert, and rebase if needed.

[ ] Write meaningful commit messages

# Good format
git commit -m "Add email validation to registration form

Validates email format using RFC 5322 regex.
Prevents users from registering with invalid emails.
Related to #234"

# Avoid
git commit -m "fix"
git commit -m "update code"

Future you will thank present you for clear commit messages.

[ ] Run tests before committing

# Always run tests first
npm test
npm run lint

# Then commit
git add .
git commit -m "Your message"

Catching test failures locally is faster than waiting for CI.

[ ] Push frequently

# Push daily or after significant progress
git push origin feature/user-profile-editing

Frequent pushing backs up your work, triggers CI, and keeps the team informed of your progress.

[ ] Sync with main regularly

# Daily, at start of work session
git fetch origin
git rebase origin/main  # or git merge origin/main

# Resolve conflicts immediately while context is fresh
git push --force-with-lease origin feature/user-profile-editing

Daily syncing keeps conflicts small and manageable.

[ ] Keep the branch focused

If you notice unrelated issues, resist fixing them in this branch. Create separate branches for separate concerns.

Preparing for Review

[ ] Clean up commit history

# Interactive rebase to squash and reorder commits
git rebase -i origin/main

# Combine "WIP" commits, fix typo commits, etc.

Present a logical story to reviewers, not your messy development process.

[ ] Ensure all tests pass locally

npm test
npm run test:integration
npm run lint

Don't rely solely on CI. Run the full suite locally to catch issues before pushing.

[ ] Update documentation

Did you change an API? Update the docs. Add a new feature? Document how to use it. This shouldn't be an afterthought.

[ ] Review your own changes

# Review the full diff
git diff main...feature/user-profile-editing

# Check for debug code, console.logs, commented code

Catch embarrassing mistakes before others see them.

[ ] Write a clear PR description

Explain what changed, why it changed, and how to test it. Include screenshots for UI changes. Link to related issues.

After Opening the PR

[ ] Respond to feedback promptly

Aim to respond within 24 hours, even if just to acknowledge comments and say when you'll address them.

[ ] Make requested changes

# Make changes, commit
git add .
git commit -m "Address review feedback: improve error messages"
git push origin feature/user-profile-editing

Each push updates the PR automatically. Keep the conversation moving.

[ ] Re-request review after changes

After addressing feedback, explicitly re-request review. Don't assume reviewers are watching for updates.

[ ] Resolve conversations

As you address comments, mark them resolved. This helps reviewers track what's been handled.

[ ] Keep the branch current during review

# If review takes days, keep syncing with main
git fetch origin
git rebase origin/main
git push --force-with-lease origin feature/user-profile-editing

Long review periods can result in stale branches. Keep them current.

Merging

[ ] Verify all checks pass

Don't merge with failing tests, linting errors, or security issues. If a check fails, fix it.

[ ] Get required approvals

Follow your team's policy. Usually this means at least one approved review from a team member.

[ ] Choose appropriate merge strategy

  • Squash and merge: For messy commit history, creates one commit in main
  • Rebase and merge: For clean commit history, maintains individual commits
  • Merge commit: For significant features you want preserved as a unit

[ ] Write a good merge commit message

If squashing, edit the default message to be clear and complete:

Add user profile editing feature

Allows users to update their name, email, and avatar.
Includes validation, error handling, and audit logging.

Closes #234

[ ] Merge the PR

Click that merge button. Your work is now part of main.

After Merging

[ ] Delete the remote branch

Most platforms offer automatic deletion on merge. If not, delete manually:

git push origin --delete feature/user-profile-editing

Keep the repository clean.

[ ] Update your local repository

# Switch to main and update
git checkout main
git pull origin main

# Delete local branch
git branch -d feature/user-profile-editing

# Clean up remote references
git fetch --prune

This completes the cleanup locally.

[ ] Verify deployment (if applicable)

If your team deploys from main automatically, verify your changes deployed correctly and aren't causing issues.

[ ] Update or close related issues

If your PR closes issues, ensure they're marked as closed and linked to your commit/PR for traceability.

Team Checklist: Establishing Feature Branch Process

This checklist helps teams set up and maintain healthy feature branch workflows.

Setting Up the Repository

[ ] Define branch naming conventions

Document your conventions in CONTRIBUTING.md:

  • feature/* for new features
  • bugfix/* for bug fixes
  • hotfix/* for urgent production fixes
  • docs/* for documentation
  • Optional: include ticket numbers

[ ] Configure branch protection rules

For main/production branches:

  • Require pull request reviews (specify how many)
  • Require status checks to pass
  • Require branches to be up to date before merging
  • Restrict who can push directly (usually nobody)

[ ] Set up automatic branch deletion

Enable "Automatically delete head branches" after merge in repository settings.

[ ] Create PR template

Add .github/pull_request_template.md:

## Description

Brief description of changes

## Type of Change

- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update

## Testing

How were these changes tested?

## Checklist

- [ ] Tests pass locally
- [ ] Documentation updated
- [ ] Commits are clean and well-described

[ ] Configure CODEOWNERS (for larger teams)

Define who reviews changes to specific parts of the codebase:

# CODEOWNERS
/api/ @backend-team
/ui/ @frontend-team
/docs/ @tech-writers

Establishing CI/CD Pipeline

[ ] Set up automated testing

Configure CI to run on every push to feature branches:

  • Unit tests
  • Integration tests
  • Linting
  • Type checking
  • Security scanning

[ ] Configure preview environments

Set up automatic deployment of feature branches to preview URLs for testing.

[ ] Define required status checks

Specify which CI checks must pass before merging:

  • Tests
  • Linting
  • Build verification
  • Security scans

[ ] Set up coverage tracking

Monitor test coverage and optionally require minimum coverage for PRs.

[ ] Configure deployment automation

Define what happens after merging:

  • Automatic deployment to staging
  • Manual deployment to production
  • Release tagging

Creating Team Guidelines

[ ] Document the workflow

Create comprehensive documentation covering:

  • How to create branches
  • How to keep branches current
  • How to request reviews
  • How to handle feedback
  • Merge strategies

[ ] Define "done" criteria

Establish what "ready to merge" means:

  • All tests pass
  • Code reviewed and approved
  • Documentation updated
  • No outstanding review comments
  • Branch is current with main

[ ] Set expectations for PR size

Guide developers toward appropriately-sized PRs:

  • Ideal: Under 400 lines changed
  • Acceptable: 400-1000 lines changed
  • Requires justification: Over 1000 lines changed

[ ] Establish review expectations

Define SLAs for code review:

  • First response within X hours
  • Full review within Y business days
  • Number of approvals required

[ ] Create onboarding checklist for new developers

Help new team members get up to speed on your feature branch workflow.

Monitoring and Maintenance

[ ] Track branch metrics

Monitor key indicators:

  • Average branch age
  • Time from creation to merge
  • Number of stale branches
  • Merge frequency

[ ] Schedule regular cleanup

Set up automated cleanup or schedule manual reviews:

  • Weekly audit of branches older than 30 days
  • Automated deletion of merged branches
  • Regular pruning of remote references

[ ] Review workflow effectiveness quarterly

Assess whether your process is working:

  • Are branches merging quickly?
  • Are reviews happening promptly?
  • Are conflicts frequent or rare?
  • Is the team happy with the workflow?

[ ] Update guidelines based on learnings

As the team grows and changes, evolve your workflow. What worked for 5 people might not work for 50.

[ ] Provide workflow training

For new team members, offer:

  • Documentation
  • Pairing sessions with experienced developers
  • Workflow overview in onboarding

Troubleshooting Common Issues

[ ] Address long-lived branches

If branches routinely live longer than two weeks:

  • Examine why (scope too large, review bottlenecks, unclear requirements)
  • Break features into smaller increments
  • Address review capacity issues

[ ] Handle frequent merge conflicts

If conflicts are constant:

  • Increase frequency of syncing with main
  • Examine whether code organization creates hotspots
  • Consider whether multiple teams need coordination

[ ] Reduce CI/CD pipeline time

If pipelines take too long:

  • Parallelize tests
  • Use caching effectively
  • Run only affected tests
  • Consider faster build infrastructure

[ ] Improve review turnaround

If reviews take too long:

  • Set clearer expectations
  • Ensure adequate reviewer capacity
  • Consider whether PRs are too large
  • Use draft PRs for early feedback

Making Checklists Work for Your Team

These checklists are starting points. Customize them based on your team's size, product, and culture. A three-person startup needs a lighter process than a 50-person enterprise team.

Start with a minimal checklist and add items as you encounter problems. If you keep discovering bugs in production from untested code, add "run full test suite" to your checklist. If branches regularly go stale, add "sync with main daily."

Make checklists visible. Include them in:

  • CONTRIBUTING.md
  • Pull request templates
  • Team documentation
  • Onboarding materials

The best checklist is one that's actually followed. If your checklist is too long or bureaucratic, people will ignore it. Keep it focused on items that genuinely improve quality and prevent problems.

The Connection to Better Development Practice

Checklists externalize knowledge and create consistency. They ensure that good practices happen reliably rather than randomly. When everyone on your team follows the same feature branch workflow, code review becomes more efficient, merges go smoothly, and the repository stays healthy.

At Pull Panda, we focus on making code review effective and enjoyable. Feature branch checklists contribute to this by ensuring branches arrive at code review in good shape—tested, current with main, and clearly described. When developers follow consistent practices, reviewers can focus on the important parts: design decisions, potential issues, and suggesting improvements.

For deeper exploration of the concepts behind this checklist, see our complete guide to mastering feature branches. And to understand how to adapt these practices for different team sizes and workflows, check out our comparison of different branching strategies.