Skill git-sync
Sincroniza una rama de funcionalidad con su rama base o upstream utilizando estrategias de merge o rebase con gestión automática de stash.
- Estrellas en GitHub
- 8
- Archivos
- 3
- Último commit
- 28 oct 2026
- Licencia
- MIT
- Herramientas permitidas
- —
¿Qué hace la skill git-sync?
git-sync es una agent skill. Sincroniza una rama de funcionalidad con su rama base o upstream utilizando estrategias de merge o rebase con gestión automática de stash.
Resumen generado a partir del SKILL.md de la skill.
Sobre la skill git-sync
git-sync se encarga de mantener las ramas de funcionalidad actualizadas con las ramas main o develop para desarrolladores que trabajan en repositorios Git. Automatiza el proceso de traer cambios desde una rama base o upstream hacia tu rama de trabajo actual, ya sea mediante una estrategia de merge o rebase. La herramienta está diseñada para actualizaciones de ramas ad-hoc, no para la gestión formal de lanzamientos o la promoción de hotfixes.
Cuando un agente carga esta skill, realiza un flujo de trabajo de múltiples fases que comienza inspeccionando el estado de la rama actual mediante git status y git log. Puede detectar automáticamente la rama base a través de GitHub CLI o configuraciones locales de git. Para evitar la pérdida de datos, la skill puede usar el flag --stash para guardar temporalmente los cambios sin confirmar antes de la sincronización y recuperarlos una vez completado el proceso. Se apoya en comandos estándar de git y proporciona advertencias específicas si se solicita un rebase en una rama que ya ha sido enviada a un remoto.
Los usuarios pueden personalizar la operación con argumentos como --rebase para reescribir el historial, --base para especificar una rama de destino, o --upstream para sincronizar desde el remoto upstream de un fork. Si surgen conflictos durante un merge o rebase, la skill identifica los archivos específicos involucrados y se detiene para permitir la resolución manual.
Lo que un agente puede hacer con ella
- 1Actualizar rama de funcionalidad con mainSincroniza tu rama de trabajo actual con la rama main usando la estrategia de merge por defecto.
- 2Rebase sobre una rama específicaAplica tus commits locales sobre los últimos cambios de la rama develop mediante un rebase.
- 3Sincronizar un fork desde upstreamTrae los últimos cambios del remoto upstream hacia tu fork local para mantenerlo actualizado.
- 4Sincronizar preservando cambios localesRealiza una sincronización de rama mientras aplicas automáticamente un stash a tu trabajo sin confirmar para evitar errores.
Escrito a partir del SKILL.md de la skill. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar la skill git-sync
Cada comando copia la carpeta de la skill al directorio de skills del cliente. Reinicia el cliente o inicia una nueva sesión para cargarla.Instalar la skill git-sync en Plugin
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
Instalar la skill git-sync en Claude Code
~/.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-syncInstalar la skill git-sync en Claude Code (project)
.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync .claude/skills/git-syncInstalar la skill git-sync en Codex
~/.agents/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.agents/skills/git-syncInstalar la skill git-sync en Gemini CLI
~/.gemini/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.gemini/skills/git-syncInstalar la skill git-sync en Claude.ai
npx degit mgiovani/cc-arsenal/skills/git-sync git-sync && zip -r git-sync.zip git-sync # claude.ai → Customize → Skills → + → Create skill → Upload a skill → git-sync.zip
SKILL.md
Ver en GitHubGit Sync
Sync the current branch with its base or upstream branch. Defaults to merge to preserve history; rebase is opt-in only. Only ever act on what git status and git log actually show: never guess branch state or conflicts.
Workflow
Phase 1: Detect & Decide
Run the following to understand current branch state:
git branch --show-current
git status --porcelain
git remote -v
git log --oneline HEAD..origin/main 2>/dev/null | head -20
git log --oneline origin/main..HEAD 2>/dev/null | head -20
Also check whether the branch is pushed to remote (git log origin/<branch>..HEAD: an error means local-only).
Determine the base branch once, and reuse the result for the rest of the run:
- User passed
--base <branch>: use it. - Otherwise
gh pr view --json baseRefName -q .baseRefName 2>/dev/null(if an open PR exists). - Otherwise
git config branch.<name>.merge. - Otherwise ask the user which base branch to use.
Determine sync strategy:
Merge (default): use when the branch has been pushed to remote, the user did not pass --rebase, or you are unsure.
Rebase (opt-in): use only when the user explicitly passed --rebase.
Fork sync (--upstream) syncs from the upstream remote instead of origin: git fetch upstream && git merge upstream/<base>.
Display the detected state and proposed strategy before proceeding:
Current branch: feature/my-feature
Base branch: main
Strategy: merge (default)
Commits behind: 5
Commits ahead: 2
Dirty tree: no
Phase 2: Pre-sync Safety
- Dirty working tree: with
--stash, rungit stash push -m "git-sync auto-stash"before syncing. Without--stash, abort and tell the user to commit, stash, or re-run with--stash. - Fetch latest:
git fetch origin(andgit fetch upstreamfor fork sync). - Re-check divergence after fetch so the numbers you report are accurate, not the pre-fetch snapshot.
Phase 3: Execute & Report
Merge: git merge origin/<base>
Rebase, local-only branch: git rebase origin/<base>
Rebase, pushed branch: warn before rewriting shared history:
WARNING: This branch has been pushed to remote.
Rebasing will require a force-push, which rewrites history.
This is ONLY safe if no one else has pulled this branch.
Proceed? [y/N]
If confirmed:
git rebase origin/<base>
git push --force-with-lease origin <branch>
On merge/rebase conflict, do not guess how to resolve them:
git diff --name-only --diff-filter=Uto list conflicting files.- Report the exact file list, e.g.:
Conflicts in 2 files: src/api/client.ts src/api/types.ts Resolve manually, then run `git merge --continue` (or `git rebase --continue`). Or run `git merge --abort` (or `git rebase --abort`) to back out. - Stop and wait. Do not attempt automatic resolution.
After a successful sync:
- If a stash was auto-created in Phase 2, pop it now:
git stash pop. If the pop itself conflicts, report those conflicting files the same way as a merge conflict. - Gather real numbers, don't estimate:
git log --oneline -5 git log --oneline origin/<base>..HEAD | wc -l - Report, using only values from the commands above:
Include whether force-push was used, and mentionSynced feature/my-feature onto main (merge). Now 2 commits ahead of main, 0 behind. Stash popped cleanly.git rerereif conflicts occurred during this run.
Argument Parsing
--rebase: use rebase instead of merge--base <branch>: specify the base branch (default: auto-detect)--upstream: sync fromupstreamremote instead oforigin(fork workflow)--stash: auto-stash dirty changes before sync, pop after
Important Notes
- Never force push to main/master, regardless of flags or user insistence.
- Merge is the safe default for shared branches; only rebase branches you're sure are local-only or where the user explicitly accepted the force-push warning.
- Use
--force-with-lease, never bare--force, so a rebase-push can't clobber someone else's commits. - Fork workflow requires the
upstreamremote to already be configured (git remote add upstream <url>).
Examples
# Sync with main using merge (default)
/git-sync
# Sync with develop branch
/git-sync --base develop
# Rebase onto main (will warn if branch is already pushed)
/git-sync --rebase
# Sync, stashing local changes first
/git-sync --stash
# Fork sync: pull upstream changes into your fork
/git-sync --upstream --base main
Archivos de esta skill
3Preguntas sobre la skill git-sync
¿Cómo instalo la skill git-sync en Claude Code?
Ejecuta npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-sync. Claude Code carga las skills desde ~/.claude/skills (todos los proyectos) o .claude/skills (un proyecto) y usa una skill cuando su descripción coincide con la tarea.
¿Qué clientes pueden usar la skill git-sync?
Cualquier cliente que lea el formato Agent Skills: Claude Code, Codex, Gemini CLI y claude.ai (subir como ZIP). Los scripts de la skill se ejecutan solo donde el cliente permite la ejecución de código.
¿Cómo sincronizo mi rama con una rama base específica?
Puedes especificar la rama base usando el flag --base, por ejemplo: /git-sync --base develop.
¿Puedo usar esta herramienta para sincronizar mi fork con el repositorio original?
Sí, usa el flag --upstream para sincronizar desde el remoto upstream en lugar de origin.
¿Qué pasa si tengo cambios sin confirmar en mi directorio de trabajo?
Si usas el flag --stash, la herramienta guardará automáticamente tus cambios en un stash antes de la sincronización y los restaurará al finalizar.