Syncing main branch
Skill narumiruna/skills/skills/workflow-repository/syncing-main-branch
npx -y skills add narumiruna/skills --skill syncing-main-branchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Switch a clean Git worktree to local `main` and fast-forward it from its configured upstream without losing branches, commits, or local files. Use only when the user explicitly invokes $syncing-main-branch or names syncing-main-branch.
SKILL.md
2.1 KB, as published. Nobody here has run it
Syncing Main Branch
Use only after explicit invocation. Operate on the current repository and preserve the branch, commits, and files being left.
Workflow
- Inspect tracked and untracked state, branch, and HEAD:
git status --porcelain=v1 --untracked-files=all
git status --short --branch
git symbolic-ref --quiet --short HEAD
Stop on any local change; do not stash, commit, discard, or carry it automatically. If HEAD is detached, record it and inspect containing refs. Stop until an otherwise reflog-only commit is preserved with a user-chosen branch or tag.
-
Resolve
mainexactly.- Use local
refs/heads/mainwhen it exists. - If absent, create tracking
mainonly when exactly one intended remotemainis clear:git switch --no-overwrite-ignore --track -c main <remote>/main. - Stop if the remote is ambiguous,
maindoes not exist, or another worktree owns it. Do not substitute another branch or bypass worktree protection.
- Use local
-
Switch with ignored-file overwrite protection when needed:
git switch --no-overwrite-ignore main
- Verify
maintracks the intended upstream, fetch its configured remote, then fast-forward only:
upstream_remote=$(git config --get branch.main.remote)
git rev-parse --abbrev-ref 'main@{upstream}'
git fetch "$upstream_remote"
git merge --ff-only --no-overwrite-ignore 'main@{upstream}'
Stop on missing or unexpected upstream, authentication failure, divergence, ignored-file collision, or non-fast-forward. Do not rebase, reset, force, delete files, change upstream, or delete the previous branch.
- Verify
git status --short --branchandgit log -1 --oneline --decorate. Report the active branch, before/after object IDs, upstream, and whether it advanced. “Already up to date” is success and requires no commit.