Description 582 -> 237 chars, body 1217 -> 290 words. The single remotes.md splits into config, fetch, push, and pull flow files. Restores the confirm: true token to the force-push gate -- it is the git plugin's cross-skill contract, gated on by git-orchestrate and git-branches. Moves push.md's worked example off main, which the skill's own Step 1 refuses, and restores the never-bare---force directive.
2.4 KiB
2.4 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 submodule pointers -> `git-submodules`. |
|
Gotchas
--force-with-leasealone is not safe — background processes (IDE plugins, cron jobs) runninggit fetchsilently 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 --pruneleaves orphaned tags behind. Use--prune --prune-tags, or setfetch.pruneTags true. - Pull defaults shift between Git versions — older ones default to merge, newer to
--ff-only. Setpull.ff onlyexplicitly rather than trusting 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, 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.