Skill git-sync
Mensinkronisasi feature branch dengan base atau upstream branch menggunakan strategi merge atau rebase dengan penanganan stash otomatis.
- Bintang GitHub
- 8
- File
- 3
- Commit terakhir
- 28 Okt 2026
- Lisensi
- MIT
- Tool yang diizinkan
- —
Apa fungsi skill git-sync?
git-sync adalah agent skill. Mensinkronisasi feature branch dengan base atau upstream branch menggunakan strategi merge atau rebase dengan penanganan stash otomatis.
Ringkasan dibuat dari SKILL.md skill ini.
Tentang skill git-sync
git-sync menangani kebutuhan developer yang bekerja di repositori Git untuk menjaga feature branch tetap up-to-date dengan branch main atau develop. Tool ini mengotomatiskan proses penarikan perubahan dari base atau upstream branch ke dalam working branch Anda saat ini menggunakan strategi merge atau rebase. Tool ini dirancang untuk pembaruan branch secara ad-hoc, bukan untuk manajemen rilis formal atau promosi hotfix.
Saat agent memuat skill ini, ia akan menjalankan workflow multi-fase yang dimulai dengan memeriksa status branch saat ini menggunakan git status dan git log. Skill ini dapat mendeteksi base branch secara otomatis melalui GitHub CLI atau konfigurasi git lokal. Untuk mencegah kehilangan data, skill ini dapat menggunakan flag --stash untuk menyimpan perubahan yang belum di-commit secara sementara sebelum sinkronisasi dan melakukan pop setelah proses selesai. Tool ini mengandalkan perintah git standar dan memberikan peringatan spesifik jika rebase diminta pada branch yang sudah di-push ke remote.
Pengguna dapat menyesuaikan operasi dengan argumen seperti --rebase untuk menulis ulang history, --base untuk menentukan target branch, atau --upstream untuk sinkronisasi dari upstream remote milik fork. Jika terjadi konflik selama proses merge atau rebase, skill ini akan mengidentifikasi file spesifik yang terlibat dan berhenti untuk memungkinkan resolusi manual.
Apa yang bisa dilakukan agent dengannya
- 1Update feature branch dengan mainSinkronisasikan working branch Anda saat ini dengan branch main menggunakan strategi merge default.
- 2Rebase ke branch tertentuTerapkan commit lokal Anda di atas perubahan terbaru dari branch develop menggunakan rebase.
- 3Sync fork dari upstreamTarik perubahan terbaru dari upstream remote ke dalam fork lokal Anda agar tetap up-to-date.
- 4Sync sambil mempertahankan perubahan lokalLakukan sinkronisasi branch sambil secara otomatis melakukan stash pada pekerjaan yang belum di-commit untuk menghindari error.
Ditulis dari SKILL.md milik skill tersebut. Setiap use case diverifikasi dengan kutipan darinya.
Cara install skill git-sync
Setiap perintah menyalin folder skill ke direktori skills client. Restart client atau mulai sesi baru untuk memuatnya.Install skill git-sync di Plugin
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
Install skill git-sync di Claude Code
~/.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-syncInstall skill git-sync di Claude Code (project)
.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync .claude/skills/git-syncInstall skill git-sync di Codex
~/.agents/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.agents/skills/git-syncInstall skill git-sync di Gemini CLI
~/.gemini/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.gemini/skills/git-syncInstall skill git-sync di 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
Lihat di 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
Berkas dalam skill ini
3Pertanyaan seputar skill git-sync
Bagaimana cara install skill git-sync di Claude Code?
Jalankan npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-sync. Claude Code memuat skill dari ~/.claude/skills (semua proyek) atau .claude/skills (satu proyek) dan menggunakan skill saat deskripsinya cocok dengan tugas.
Client mana saja yang bisa menggunakan skill git-sync?
Client apa pun yang membaca format Agent Skills: Claude Code, Codex, Gemini CLI, dan claude.ai (unggah sebagai ZIP). Script dalam skill hanya berjalan di client yang mengizinkan eksekusi kode.
Bagaimana cara mensinkronisasi branch saya dengan base branch tertentu?
Anda dapat menentukan base branch menggunakan flag --base, contohnya: /git-sync --base develop.
Bisakah saya menggunakan tool ini untuk mensinkronisasi fork saya dengan repositori asli?
Ya, gunakan flag --upstream untuk melakukan sinkronisasi dari upstream remote alih-alih origin.
Apa yang terjadi jika saya memiliki perubahan yang belum di-commit di working directory?
Jika Anda menggunakan flag --stash, tool ini akan secara otomatis melakukan stash pada perubahan Anda sebelum sinkronisasi dan melakukan pop setelah proses selesai.