Skill git-sync
Synchronise une branche de fonctionnalité avec sa branche de base ou d'origine en utilisant des stratégies de merge ou de rebase avec gestion automatique du stash.
- Étoiles GitHub
- 8
- Fichiers
- 3
- Dernier commit
- 28 oct. 2026
- Licence
- MIT
- Outils autorisés
- —
Que fait la skill git-sync ?
git-sync est une agent skill. Synchronise une branche de fonctionnalité avec sa branche de base ou d'origine en utilisant des stratégies de merge ou de rebase avec gestion automatique du stash.
Résumé généré à partir du SKILL.md de la skill.
À propos du skill git-sync
git-sync permet aux développeurs travaillant sur des dépôts Git de maintenir leurs branches de fonctionnalités à jour avec les branches main ou develop. Il automatise le processus de récupération des changements d'une branche de base ou d'origine vers votre branche de travail actuelle, en utilisant une stratégie de merge ou de rebase. Cet outil est conçu pour des mises à jour de branches ad hoc plutôt que pour la gestion formelle des versions ou la promotion de hotfix.
Lorsqu'un agent charge cette SKILL, il exécute un flux de travail en plusieurs phases qui commence par l'inspection de l'état de la branche actuelle via git status et git log. Il peut détecter automatiquement la branche de base grâce à la GitHub CLI ou aux configurations git locales. Pour éviter toute perte de données, la SKILL peut utiliser le flag --stash pour sauvegarder temporairement les modifications non validées avant la synchronisation et les restaurer une fois le processus terminé. Elle s'appuie sur les commandes git standards et fournit des avertissements spécifiques si un rebase est demandé sur une branche qui a déjà été poussée vers un remote.
Les utilisateurs peuvent personnaliser l'opération avec des arguments tels que --rebase pour la réécriture de l'historique, --base pour spécifier une branche cible, ou --upstream pour synchroniser depuis le remote upstream d'un fork. Si des conflits surviennent lors d'un merge ou d'un rebase, la SKILL identifie les fichiers spécifiques impliqués et s'arrête pour permettre une résolution manuelle.
Ce qu'un agent peut faire avec
- 1Mettre à jour une branche de fonctionnalité avec mainSynchronisez votre branche de travail actuelle avec la branche main en utilisant la stratégie de merge par défaut.
- 2Rebaser sur une branche spécifiqueAppliquez vos commits locaux par-dessus les derniers changements de la branche develop en utilisant un rebase.
- 3Synchroniser un fork depuis l'upstreamRécupérez les derniers changements du remote upstream dans votre fork local pour le maintenir à jour.
- 4Synchroniser tout en préservant les changements locauxEffectuez une synchronisation de branche tout en mettant automatiquement votre travail non validé de côté avec stash pour éviter les erreurs.
Rédigé à partir du SKILL.md du skill. Chaque cas d'utilisation est vérifié par rapport à une citation de celui-ci.
Comment installer la skill git-sync
Chaque commande copie le dossier de la skill dans le répertoire des skills du client. Redémarrez le client ou démarrez une nouvelle session pour la charger.Installer la skill git-sync dans Plugin
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
Installer la skill git-sync dans Claude Code
~/.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-syncInstaller la skill git-sync dans Claude Code (project)
.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync .claude/skills/git-syncInstaller la skill git-sync dans Codex
~/.agents/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.agents/skills/git-syncInstaller la skill git-sync dans Gemini CLI
~/.gemini/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.gemini/skills/git-syncInstaller la skill git-sync dans 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
Voir sur 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
Fichiers de cette skill
3Questions sur la skill git-sync
Comment installer la skill git-sync dans Claude Code ?
Exécutez npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-sync. Claude Code charge les skills depuis ~/.claude/skills (tous les projets) ou .claude/skills (un seul projet) et utilise une skill lorsque sa description correspond à la tâche.
Quels clients peuvent utiliser la skill git-sync ?
Tout client qui lit le format Agent Skills : Claude Code, Codex, Gemini CLI et claude.ai (envoi sous forme de ZIP). Les scripts de la skill ne s'exécutent que si le client autorise l'exécution de code.
Comment synchroniser ma branche avec une branche de base spécifique ?
Vous pouvez spécifier la branche de base à l'aide du flag --base, par exemple : /git-sync --base develop.
Puis-je utiliser cet outil pour synchroniser mon fork avec le dépôt original ?
Oui, utilisez le flag --upstream pour synchroniser depuis le remote upstream au lieu de origin.
Que se passe-t-il si j'ai des modifications non validées dans mon répertoire de travail ?
Si vous utilisez le flag --stash, l'outil mettra automatiquement vos modifications de côté avec stash avant la synchronisation et les réappliquera ensuite.