Files
holocron/plugins/git/skills/git-remotes/SKILL.md
Defame1297 af8b46cd57 chore(plugins): sync generated content mirrors
Regenerate plugins/*/skills/ from plugins/*/.apm/ after the previous
four commits, via scripts/sync-plugin-content.sh --all. The mirror is
generated output (ADR-0017) that check-plugin-content-sync's pre-push
hook diffs against .apm/; nothing here is hand-edited.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP
2026-09-07 20:43:51 +00:00

2.3 KiB

name, description, metadata
name description metadata
git-remotes Use when a git operation — remote config, fetch, push, or pull — touches a remote, even when the user does not name it. Not local commits -> `git-commits`. Not local branches -> `git-branches`. Not log or bisect queries -> `git-history`. Not submodule pointers -> `git-submodules`.
version category source_keys
1.0.0 git
git-scm-remote-docs
git-scm-fetch-docs
git-scm-push-docs
git-scm-pull-docs
context7-git-htmldocs

Gotchas

  • --force-with-lease alone is not safe — background processes (IDE plugins, cron jobs) running git fetch silently defeat the protection. Combine it with --force-if-includes, or pin the explicit --force-with-lease=<ref>:<sha> form.
  • Prune does not touch tags by default — git fetch --prune leaves orphaned tags behind. Use --prune --prune-tags, or set fetch.pruneTags true.
  • Set pull.ff only explicitly — do not trust the installed default.

Step 1 — Clear the force-push gate

main and master are a hard refusal: decline a force-push targeting either, whatever confirmation accompanies it, because no local approval can restore what the remote loses. On any other branch, rtk git push --force and -f run only after the caller passes confirm: true for that specific push — for a human caller, prompt instead of failing.

Step 2 — Dispatch

Read the row matching the operation, and only that row — each file is self-contained. A task spanning two operations reads both.

Operation Read
Add, remove, rename, inspect, or re-point a remote; tracking, mirror, and set-url config references/remote-config.md
Fetch or prune remote-tracking refs; shallow or partial fetch references/fetch.md
Push branches or tags; refspecs; force-push references/push.md
Pull — integrate remote changes into the current branch references/pull.md

Step 3 — Return format

For agent callers, return:

{
  "success": true,
  "operation": "push",
  "remote": "origin",
  "branch": "main",
  "output": "...",
  "warnings": ["force-with-lease not confirmed"],
  "recommendations": ["set `pull.ff only` so the default does not vary by Git version"]
}

On failure, set success: false and add an error field holding the root cause and a recovery suggestion.