Merge main branch into current feature branch
.., shell metacharacters, or null bytes.--no-commit accepted. Reject arbitrary strings.Merge the latest main branch into your current feature branch to get updates.
/git-merge-main # Merge main into current branch
/git-merge-main develop # Merge develop instead of main
/git-merge-main --no-commit # Merge but don't commit (for review)
# Get current branch
CURRENT=$(git branch --show-current)
# Cannot merge main into main
if [ "$CURRENT" = "main" ] || [ "$CURRENT" = "master" ]; then
echo "Already on main branch. Nothing to merge."
echo "Did you mean /git-pull?"
exit 1
fi
# Check for uncommitted changes
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "You have uncommitted changes."
echo "Options:"
echo " /git-stash - Stash changes first"
echo " /commit - Commit changes first"
exit 1
fi
# Fetch latest main from remote
git fetch origin main:main 2>/dev/null || git fetch origin main
# Show what will be merged
echo "Commits from main to be merged:"
git log --oneline HEAD..origin/main | head -20
# Preview merge (without committing)
if ! git merge --no-commit --no-ff origin/main 2>/dev/null; then
echo "Merge will have conflicts."
git merge --abort
# Show conflicting files
git diff --name-only --diff-filter=U
fi
# Perform the merge
git merge origin/main --no-ff -m "Merge main into $CURRENT"
# Or without commit for review
git merge origin/main --no-commit --no-ff
Show merge result and any follow-up needed.
Merging main into feat/dark-mode...
Merged 5 commits from main:
abc1234 Fix security vulnerability
def5678 Update dependencies
ghi9012 Improve performance
jkl3456 Add new API endpoint
mno7890 Documentation updates
Files updated:
package.json
src/api/endpoints.ts
src/utils/security.ts
README.md
Merge complete! Your branch now includes all changes from main.
Next steps:
- Test your feature still works
- /git-push to update remote branch
Branch feat/dark-mode is already up to date with main.
No merge needed.
Merge conflicts detected!
Conflicting files:
- src/components/Header.tsx (both modified)
- src/styles/theme.css (both modified)
To resolve:
/git-conflicts # Get help resolving
After resolving:
git add <resolved-files>
git commit
To abort:
/git-abort
When using --no-commit:
Merge staged but not committed.
Changes from main:
M src/api/endpoints.ts
M package.json
A src/utils/newHelper.ts
Review the changes, then:
git commit -m "Merge main into feat/dark-mode"
Or abort:
git merge --abort
/git-rebase instead| Merge | Rebase | |-------|--------| | Preserves complete history | Creates linear history | | Shows when integration happened | Looks like sequential development | | Better for shared branches | Better for personal branches | | Non-destructive | Rewrites commit history |
/git-sync first to see what's on main/git-rebase for cleaner history (alternative)/git-conflicts if merge has conflicts/git-abort to cancel a failed mergeSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer