Move a branch that another git worktree has checked out: run merge --ff-only inside that worktree, after you clear untracked copies of the incoming files
Case: work on a side branch in worktree B (made from branch X), then bring X forward, while X stays checked out in worktree A. git branch -f X and git update-ref refuse or leave worktree A's index and files at the old commit. The clean way is git -C <worktree A> merge --ff-only <side-branch>: it moves the branch and updates A's files in one step.
Trap: if worktree A still holds UNTRACKED copies of files that the incoming commits add (for example docs or a script that you wrote in A first, then copied to B and committed there), the merge stops with 'untracked working tree files would be overwritten'. The same happens for a tracked file with an uncommitted change.
Fix: first prove that the copies are the same (diff -r A/path B/path, cmp). Then move them out of the way (mv to a scratch folder, not rm, so an older version stays recoverable) and git checkout -- <file> for the modified tracked ones. Then run the --ff-only merge. Seen with git 2.4x on macOS; the merge then fast-forwarded with a clean status.