# Ff Worktrees

> Fast-forward master and every git worktree branch up to a target ref (default github/master), skipping any worktree with unmerged commits. Use when the user wants to sync/update their worktree branches to latest master — e.g. "/ff-worktrees", "ff all worktrees to github/master", "fast-forward the worktrees".

- Skill: `damus-io/ff-worktrees` (Agent Skill)
- Install (CLI): `npx skillmds@latest add damus-io/ff-worktrees`
- Raw SKILL.md: https://api.skillmd.com/api/skills/damus-io/ff-worktrees/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: damus-io (https://skillmd.com/u/damus-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/damus-io/ff-worktrees

---


# ff-worktrees

Fast-forwards `master` and every branch checked out in a git worktree up to a
target ref. Only true fast-forwards are applied: a branch is advanced solely
when it is already an ancestor of the target. Worktree branches carrying their
own unmerged commits are left untouched and reported as skipped, so no work is
ever clobbered.

## Running it

```bash
scripts/ff-worktrees.sh [target]
```

- `target` — ref to fast-forward toward. Defaults to `github/master`. When it
  looks like `<remote>/<branch>` and `<remote>` is configured, the remote is
  fetched first.

Examples:

```bash
scripts/ff-worktrees.sh                 # ff everything to github/master
scripts/ff-worktrees.sh origin/master   # ff everything to origin/master
```

## Behavior

- Fetches the target's remote first (when the target is `<remote>/<branch>`).
- Fast-forwards each branch in place inside its worktree via `merge --ff-only`;
  untracked files and non-conflicting local edits survive.
- A branch not checked out in any worktree (e.g. `master` when it's idle) has
  its ref moved directly, still guarded by an ancestry (fast-forward) check.
- Reports a one-line summary per branch: `+` advanced, `=` already up to date,
  `~` skipped for unmerged commits, `!` skipped because a dirty worktree blocks
  the fast-forward.

Safe to run from any worktree — it never resets a branch or discards commits.

