git-sync Skill
Synchronisiert einen Feature-Branch mit seinem Base- oder Upstream-Branch mittels Merge- oder Rebase-Strategien inklusive automatischem Stash-Handling.
- GitHub Stars
- 8
- Dateien
- 3
- Letzter Commit
- 28. Okt. 2026
- Lizenz
- MIT
- Erlaubte Tools
- —
Was macht der git-sync Skill?
git-sync ist ein Agent Skill. Synchronisiert einen Feature-Branch mit seinem Base- oder Upstream-Branch mittels Merge- oder Rebase-Strategien inklusive automatischem Stash-Handling.
Zusammenfassung erzeugt aus der SKILL.md des Skills.
Über den git-sync skill
git-sync übernimmt für Entwickler, die in Git-Repositories arbeiten, das Aktualisieren von Feature-Branches mit den main- oder develop-Branches. Es automatisiert den Prozess, Änderungen von einem Base- oder Upstream-Branch in deinen aktuellen Working-Branch zu ziehen – entweder per Merge- oder Rebase-Strategie. Das Tool ist für Ad-hoc-Branch-Updates gedacht und nicht für formelles Release-Management oder Hotfix-Promotions.
Wenn ein Agent diesen Skill lädt, führt er einen mehrphasigen Workflow aus, der mit der Inspektion des aktuellen Branch-Status via git status und git log beginnt. Er kann den Base-Branch automatisch über die GitHub CLI oder lokale Git-Konfigurationen erkennen. Um Datenverlust zu vermeiden, kann der Skill das --stash Flag nutzen, um uncommitted Änderungen vor dem Sync temporär zu sichern und sie nach Abschluss des Prozesses wieder einzuspielen. Er basiert auf Standard-Git-Commands und gibt spezifische Warnungen aus, falls ein Rebase auf einem Branch angefordert wird, der bereits an ein Remote gepusht wurde.
Nutzer können den Vorgang mit Argumenten wie --rebase zum Umschreiben der History, --base zur Angabe eines Ziel-Branches oder --upstream zum Synchronisieren von einem Upstream-Remote eines Forks anpassen. Falls während eines Merges oder Rebases Konflikte auftreten, identifiziert der Skill die betroffenen Dateien und stoppt, um eine manuelle Auflösung zu ermöglichen.
Was ein agent damit machen kann
- 1Feature-Branch mit main aktualisierenSynchronisiere deinen aktuellen Working-Branch mit dem main-Branch unter Verwendung der Standard-Merge-Strategie.
- 2Rebase auf einen spezifischen BranchWende deine lokalen Commits mittels Rebase auf die neuesten Änderungen des develop-Branches an.
- 3Fork vom Upstream synchronisierenZiehe die neuesten Änderungen vom Upstream-Remote in deinen lokalen Fork, um ihn auf dem neuesten Stand zu halten.
- 4Sync unter Beibehaltung lokaler ÄnderungenFühre eine Branch-Synchronisierung durch, während deine uncommitted Arbeit automatisch gestasht wird, um Fehler zu vermeiden.
Geschrieben basierend auf dem SKILL.md des skills. Jeder use case wurde gegen ein zitat daraus geprüft.
So installierst du den git-sync Skill
Jeder Befehl kopiert den Skill-Ordner in das Skills-Verzeichnis des Clients. Starte den Client neu oder beginne eine neue Session, um ihn zu laden.Den git-sync Skill in Plugin installieren
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
Den git-sync Skill in Claude Code installieren
~/.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-syncDen git-sync Skill in Claude Code (project) installieren
.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync .claude/skills/git-syncDen git-sync Skill in Codex installieren
~/.agents/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.agents/skills/git-syncDen git-sync Skill in Gemini CLI installieren
~/.gemini/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.gemini/skills/git-syncDen git-sync Skill in Claude.ai installieren
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
Auf GitHub ansehenGit 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
Dateien in diesem Skill
3git-sync Skill-Fragen
Wie installiere ich den git-sync Skill in Claude Code?
Führe npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-sync aus. Claude Code lädt Skills aus ~/.claude/skills (alle Projekte) oder .claude/skills (ein Projekt) und nutzt einen Skill, wenn seine Beschreibung zur Aufgabe passt.
Welche Clients können den git-sync Skill nutzen?
Jeder Client, der das Agent Skills-Format liest: Claude Code, Codex, Gemini CLI und claude.ai (als ZIP hochladen). Skripte im Skill laufen nur dort, wo der Client Codeausführung erlaubt.
Wie synchronisiere ich meinen Branch mit einem spezifischen Base-Branch?
Du kannst den Base-Branch über das --base Flag angeben, zum Beispiel: /git-sync --base develop.
Kann ich dieses Tool nutzen, um meinen Fork mit dem Original-Repository zu synchronisieren?
Ja, nutze das --upstream Flag, um vom Upstream-Remote statt von origin zu synchronisieren.
Was passiert, wenn ich uncommitted Änderungen in meinem Working Directory habe?
Wenn du das --stash Flag verwendest, stasht das Tool deine Änderungen automatisch vor dem Sync und poppt sie danach wieder auf.