Files
SuperClaude/docs/research/research_git_branch_integration_2025.md
kazuki ce51fb512b refactor: consolidate documentation directories
Merged claudedocs/ into docs/research/ for consistent documentation structure.

Changes:
- Moved all claudedocs/*.md files to docs/research/
- Updated all path references in documentation (EN/KR)
- Updated RULES.md and research.md command templates
- Removed claudedocs/ directory
- Removed ClaudeDocs/ from .gitignore

Benefits:
- Single source of truth for all research reports
- PEP8-compliant lowercase directory naming
- Clearer documentation organization
- Prevents future claudedocs/ directory creation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 04:51:46 +09:00

8.1 KiB

Git Branch Integration Research: Master/Dev Divergence Resolution (2025)

Research Date: 2025-10-16 Query: Git merge strategies for integrating divergent master/dev branches with both having valuable changes Confidence Level: High (based on official Git docs + 2024-2025 best practices)


Executive Summary

When master and dev branches have diverged with independent commits on both sides, merge is the recommended strategy to integrate all changes from both branches. This preserves complete history and creates a permanent record of integration decisions.

Current Situation Analysis

  • dev branch: 2 commits ahead (PM Agent refactoring work)
  • master branch: 3 commits ahead (upstream merges + documentation organization)
  • Status: Divergent branches requiring reconciliation
# Step 1: Update dev with master's changes
git checkout dev
git merge master  # Brings upstream updates into dev

# Step 2: When ready for release
git checkout master
git merge dev     # Integrates PM Agent work into master

Research Findings

1. GitFlow Pattern (Industry Standard)

Source: Atlassian Git Tutorial, nvie.com Git branching model

Key Principles:

  • develop (or dev) = active development branch
  • master (or main) = production-ready releases
  • Flow direction: feature → develop → master
  • Each merge to master = new production release

Release Process:

  1. Development work happens on dev
  2. When dev is stable and feature-complete → merge to master
  3. Tag the merge commit on master as a release
  4. Continue development on dev

2. Divergent Branch Resolution Strategies

Source: Git official docs, Git Tower, Julia Evans blog (2024)

When branches have diverged (both have unique commits), three options exist:

Strategy Command Result Best For
Merge git merge Creates merge commit, preserves all history Keeping both sets of changes (RECOMMENDED)
Rebase git rebase Replays commits linearly, rewrites history Clean linear history (NOT for published branches)
Fast-forward git merge --ff-only Only succeeds if no divergence Fails in this case

Why Merge is Recommended Here:

  • Preserves complete history from both branches
  • Creates permanent record of integration decisions
  • No history rewriting (safe for shared branches)
  • All conflicts resolved once in merge commit
  • Standard practice for GitFlow dev → master integration

3. Three-Way Merge Mechanics

Source: Git official documentation, git-scm.com Advanced Merging

How Git Merges:

  1. Identifies common ancestor commit (where branches diverged)
  2. Compares changes from both branches against ancestor
  3. Automatically merges non-conflicting changes
  4. Flags conflicts only when same lines modified differently

Conflict Resolution:

  • Git adds conflict markers: <<<<<<<, =======, >>>>>>>
  • Developer chooses: keep branch A, keep branch B, or combine both
  • Modern tools (VS Code, IntelliJ) provide visual merge editors
  • After resolution, git add + git commit completes the merge

Conflict Resolution Options:

# Accept all changes from one side (use cautiously)
git merge -Xours master    # Prefer current branch changes
git merge -Xtheirs master  # Prefer incoming changes

# Manual resolution (recommended)
# 1. Edit files to resolve conflicts
# 2. git add <resolved-files>
# 3. git commit (creates merge commit)

4. Rebase vs Merge Trade-offs (2024 Analysis)

Source: DataCamp, Atlassian, Stack Overflow discussions

Aspect Merge Rebase
History Preserves exact history, shows true timeline Linear history, rewrites commit timeline
Conflicts Resolve once in single merge commit May resolve same conflict multiple times
Safety Safe for published/shared branches Dangerous for shared branches (force push required)
Traceability Merge commit shows integration point Integration point not explicitly marked
CI/CD Tests exact production commits May test commits that never actually existed
Team collaboration Works well with multiple contributors Can cause confusion if not coordinated

2024 Consensus:

  • Use rebase for: local feature branches, keeping commits organized before sharing
  • Use merge for: integrating shared branches (like dev → master), preserving collaboration history

5. Modern Tooling Impact (2024-2025)

Source: Various development tool documentation

Tools that make merge easier:

  • VS Code 3-way merge editor
  • IntelliJ IDEA conflict resolver
  • GitKraken visual merge interface
  • GitHub web-based conflict resolution

CI/CD Considerations:

  • Automated testing runs on actual merge commits
  • Merge commits provide clear rollback points
  • Rebase can cause false test failures (testing non-existent commit states)

Actionable Recommendations

For Current Situation (dev + master diverged)

Option A: Standard GitFlow (Recommended)

# Bring master's updates into dev first
git checkout dev
git merge master -m "Merge master upstream updates into dev"
# Resolve any conflicts if they occur
# Continue development on dev

# Later, when ready for release
git checkout master
git merge dev -m "Release: Integrate PM Agent refactoring"
git tag -a v1.x.x -m "Release version 1.x.x"

Option B: Immediate Integration (if PM Agent work is ready)

# If dev's PM Agent work is production-ready now
git checkout master
git merge dev -m "Integrate PM Agent refactoring from dev"
# Resolve any conflicts
# Then sync dev with updated master
git checkout dev
git merge master

Conflict Resolution Workflow

# When conflicts occur during merge
git status  # Shows conflicted files

# Edit each conflicted file:
# - Locate conflict markers (<<<<<<<, =======, >>>>>>>)
# - Keep the correct code (or combine both approaches)
# - Remove conflict markers
# - Save file

git add <resolved-file>  # Stage resolution
git merge --continue     # Complete the merge

Verification After Merge

# Check that both sets of changes are present
git log --graph --oneline --decorate --all
git diff HEAD~1  # Review what was integrated

# Verify functionality
make test  # Run test suite
make build # Ensure build succeeds

Common Pitfalls to Avoid

Don't: Use rebase on shared branches (dev, master) Do: Use merge to preserve collaboration history

Don't: Force push to master/dev after rebase Do: Use standard merge commits that don't require force pushing

Don't: Choose one branch and discard the other Do: Integrate both branches to keep all valuable work

Don't: Resolve conflicts blindly with -Xours or -Xtheirs Do: Manually review each conflict for optimal resolution

Don't: Forget to test after merging Do: Run full test suite after every merge


Sources

  1. Git Official Documentation: https://git-scm.com/docs/git-merge
  2. Atlassian Git Tutorials: Merge strategies, GitFlow workflow, Merging vs Rebasing
  3. Julia Evans Blog (2024): "Dealing with diverged git branches"
  4. DataCamp (2024): "Git Merge vs Git Rebase: Pros, Cons, and Best Practices"
  5. Stack Overflow: Multiple highly-voted answers on merge strategies (2024)
  6. Medium: Git workflow optimization articles (2024-2025)
  7. GraphQL Guides: Git branching strategies 2024

Conclusion

For the current situation where both dev and master have valuable commits:

  1. Merge master → dev to bring upstream updates into development branch
  2. Resolve any conflicts carefully, preserving important changes from both
  3. Test thoroughly on dev branch
  4. When ready, merge dev → master following GitFlow release process
  5. Tag the release on master

This approach preserves all work from both branches and follows 2024-2025 industry best practices.

Confidence: HIGH - Based on official Git documentation and consistent recommendations across multiple authoritative sources from 2024-2025.