Use when a finished, reviewed branch is committed and needs to be merged into the default branch in a repo that integrates directly to `main` (not via pull request).
Scanned 9/10/2026
Install to Claude Code
npx -y skills add LandonSchropp/agent-toolkit --skill git-merge-into-main --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Git Merge Into Main?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/landonschropp-git-merge-into-main)More formats (shields.io, HTML) on the badges page.
---
name: git-merge-into-main
description: Use when a finished, reviewed branch is committed and needs to be merged into the default branch in a repo that integrates directly to `main` (not via pull request).
---
# Merge Into Main
Merges a finished branch into the default branch (e.g. `main`) by rebasing it on top, then fast-forwarding. For personal repos that integrate directly to `main` rather than through pull requests.
This skill does no reviewing and creates no commits.
## Process
1. **Check preconditions:** The branch must be committed with no unstaged files. It must also be reviewed by the user (not the same as a pull request review). Stop if either is missing.
2. **Rebase onto the default branch:** Find the default branch with `git default-branch`, then rebase the branch onto it. Always rebase, even for a trivial branch. Resolve any conflicts before continuing — do not `--skip` or force past them.
3. **Fast-forward and push:** Advance the default branch to the rebased branch with a fast-forward only (no merge commit), then push. If the default branch is checked out in another worktree, run the update from that worktree's directory — Git refuses to move a branch that is checked out elsewhere.
4. **Delete the merged branch:** Once the default branch has the commits, delete the branch with `git branch -d <branch>` (the `-d` refuses if it isn't fully merged, so it's a safety check). Run it from the default-branch worktree, never from inside the branch's own worktree.
Git won't delete a branch that is checked out anywhere, so free it first. If the branch has a worktree that is no longer needed, remove it with `git worktree remove <branch-worktree>`. If something else owns that worktree's lifecycle — the `ls-agent:close-workspace` skill removes herdr worktrees itself — leave it in place and detach it instead with `git -C <branch-worktree> checkout --detach`.
If the branch was pushed, also delete the remote with `git push origin --delete <branch>`.
```bash
default_branch=$(git default-branch)
git rebase "$default_branch"
git -C <default-branch-worktree> merge --ff-only <branch>
git -C <default-branch-worktree> push origin "$default_branch"
git -C <default-branch-worktree> worktree remove <branch-worktree> # or checkout --detach, if the worktree stays
git -C <default-branch-worktree> branch -d <branch>
```
## Rationalizations
| Thought | Reality |
| -------------------------------------------------- | --------------------------------------------------------------------------- |
| "The branch is simple, I'll skip the rebase" | Always rebase onto the default branch first, so the fast-forward is clean. |
| "The rebase conflicted, I'll `--skip` or force" | Resolve the conflict properly. Never discard commits to get past it. |
| "I'll just merge it, a merge commit is fine" | Fast-forward only. This skill keeps history linear. |
| "`main` won't move, I'll update it from here" | If it's checked out in another worktree, update it from that worktree. |
| "There are uncommitted changes, I'll merge anyway" | The branch must be committed and reviewed first. Stop. |
| "I'll remove the worktree while I'm in it" | Run the removal from the default-branch worktree, or you delete your cwd. |
| "Every merged branch's worktree should go" | Leave the ones another skill owns. Detach those instead of removing them. |
| "I'll leave the merged branch lying around" | Delete it after the push; `-d` keeps it safe by refusing unmerged branches. |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!