git-sync skill
Otomatik stash yönetimi ile merge veya rebase stratejilerini kullanarak bir feature branch'i base veya upstream branch ile senkronize eder.
- GitHub yıldızları
- 8
- Dosyalar
- 3
- Son commit
- 28 Eki 2026
- Lisans
- MIT
- İzin verilen araçlar
- —
git-sync skill ne işe yarar?
git-sync bir agent skill'dir. Otomatik stash yönetimi ile merge veya rebase stratejilerini kullanarak bir feature branch'i base veya upstream branch ile senkronize eder.
Özet, skill'in SKILL.md dosyasından oluşturuldu.
git-sync skilli hakkında
Git repository'lerinde çalışan geliştiriciler için git-sync, feature branch'lerin main veya develop branch'leri ile güncel tutulmasını sağlar. Bir base veya upstream branch'teki değişiklikleri mevcut çalışma branch'inize merge veya rebase stratejilerini kullanarak çekme sürecini otomatikleştirir. Araç, resmi sürüm yönetimi veya hotfix yayını yerine, anlık branch güncellemeleri için tasarlanmıştır.
Bir agent bu SKILL'i yüklediğinde, git status ve git log kullanarak mevcut branch durumunu inceleyerek başlayan çok aşamalı bir iş akışı yürütür. GitHub CLI veya yerel git yapılandırmaları aracılığıyla base branch'i otomatik olarak tespit edebilir. Veri kaybını önlemek için SKILL, senkronizasyon öncesinde commit edilmemiş değişiklikleri geçici olarak kaydetmek için --stash flag'ini kullanabilir ve işlem tamamlandığında bunları geri yükleyebilir. Standart git komutlarına dayanır ve uzak sunucuya (remote) halihazırda push edilmiş bir branch üzerinde rebase talep edilirse özel uyarılar verir.
Kullanıcılar; geçmişi yeniden yazmak için --rebase, hedef branch belirtmek için --base veya bir fork'un upstream remote'undan senkronize olmak için --upstream gibi argümanlarla işlemi özelleştirebilirler. Merge veya rebase sırasında çakışmalar (conflict) oluşursa, SKILL ilgili dosyaları tanımlar ve manuel çözüm için işlemi durdurur.
Bir agent bununla neler yapabilir
- 1Feature branch'i main ile güncelleVarsayılan merge stratejisini kullanarak mevcut çalışma branch'inizi main branch ile senkronize edin.
- 2Belirli bir branch üzerine rebase yapRebase kullanarak yerel commit'lerinizi develop branch'inden gelen en son değişikliklerin üzerine uygulayın.
- 3Fork'u upstream üzerinden senkronize etFork'unuzu güncel tutmak için upstream remote'daki en son değişiklikleri yerel fork'unuza çekin.
- 4Yerel değişiklikleri koruyarak senkronize etHatalardan kaçınmak için commit edilmemiş çalışmalarınızı otomatik olarak stash ederek bir branch senkronizasyonu gerçekleştirin.
Skill'in SKILL.md dosyasından yazılmıştır. Her kullanım durumu oradaki bir alıntı ile kontrol edilir.
git-sync skill nasıl kurulur
Her komut, skill klasörünü istemcinin skills dizinine kopyalar. Yüklemek için istemciyi yeniden başlatın veya yeni bir oturum başlatın.git-sync skill'ini Eklenti uygulamasına kur
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
git-sync skill'ini Claude Code uygulamasına kur
~/.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-syncgit-sync skill'ini Claude Code (project) uygulamasına kur
.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync .claude/skills/git-syncgit-sync skill'ini Codex uygulamasına kur
~/.agents/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.agents/skills/git-syncgit-sync skill'ini Gemini CLI uygulamasına kur
~/.gemini/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.gemini/skills/git-syncgit-sync skill'ini Claude.ai uygulamasına kur
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
GitHub'da görüntüleGit 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
Bu becerideki dosyalar
3git-sync skill soruları
git-sync skill'ini Claude Code uygulamasına nasıl kurarım?
npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-sync komutunu çalıştırın. Claude Code, skill'leri ~/.claude/skills (tüm projeler) veya .claude/skills (tek proje) konumundan yükler ve açıklaması görevle eşleştiğinde skill'i kullanır.
git-sync skill'ini hangi istemciler kullanabilir?
Agent Skills biçimini okuyan her istemci: Claude Code, Codex, Gemini CLI ve claude.ai (ZIP olarak yükleyin). Skill içindeki betikler yalnızca istemcinin kod çalıştırmaya izin verdiği yerlerde çalışır.
Branch'imi belirli bir base branch ile nasıl senkronize edebilirim?
--base flag'ini kullanarak base branch'i belirleyebilirsiniz, örneğin: /git-sync --base develop.
Bu aracı fork'umu orijinal repository ile senkronize etmek için kullanabilir miyim?
Evet, origin yerine upstream remote üzerinden senkronize etmek için --upstream flag'ini kullanabilirsiniz.
Çalışma dizinimde commit edilmemiş değişiklikler varsa ne olur?
Eğer --stash flag'ini kullanırsanız, araç senkronizasyon öncesinde değişikliklerinizi otomatik olarak stash eder ve işlem tamamlandıktan sonra geri yükler (pop).