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 branche

SKILL.md

GitHub

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

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:

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.