Навык git-sync
Синхронизирует feature-ветку с базовой или upstream-веткой, используя стратегии merge или rebase с автоматической работой со stash.
- Звёзды на GitHub
- 8
- Файлы
- 3
- Последний коммит
- 28 окт. 2026 г.
- Лицензия
- MIT
- Разрешённые инструменты
- —
Что делает навык git-sync?
git-sync — это Agent Skill. Синхронизирует feature-ветку с базовой или upstream-веткой, используя стратегии merge или rebase с автоматической работой со stash.
Сводка сгенерирована из SKILL.md навыка.
О skill git-sync
git-sync помогает разработчикам, работающим с Git-репозиториями, поддерживать актуальность feature-веток относительно main или develop. Он автоматизирует процесс подтягивания изменений из базовой или upstream-ветки в вашу текущую рабочую ветку, используя стратегию merge или rebase. Инструмент предназначен для оперативного обновления веток, а не для формального управления релизами или продвижения hotfix.
Когда агент загружает этот SKILL, он выполняет многоэтапный рабочий процесс, который начинается с проверки состояния текущей ветки через git status и git log. Он может автоматически определить базовую ветку через GitHub CLI или локальные конфигурации git. Чтобы предотвратить потерю данных, навык может использовать флаг --stash для временного сохранения незакоммиченных изменений перед синхронизацией и их последующего извлечения после завершения процесса. Он опирается на стандартные команды git и выдает предупреждения, если rebase запрашивается для ветки, которая уже была отправлена в remote.
Пользователи могут настраивать операцию с помощью таких аргументов, как --rebase для перезаписи истории, --base для указания целевой ветки или --upstream для синхронизации с upstream remote вашего форка. Если при слиянии или rebase возникнут конфликты, навык определит задействованные файлы и остановится, чтобы вы могли разрешить их вручную.
Что агент может делать с ним
- 1Обновление feature-ветки из mainСинхронизируйте вашу текущую рабочую ветку с веткой main, используя стратегию merge по умолчанию.
- 2Rebase на конкретную веткуПримените ваши локальные коммиты поверх последних изменений из ветки develop с помощью rebase.
- 3Синхронизация форка из upstreamПодтяните последние изменения из upstream remote в ваш локальный форк, чтобы поддерживать его актуальность.
- 4Синхронизация с сохранением локальных измененийВыполните синхронизацию ветки с автоматическим использованием stash для незакоммиченной работы, чтобы избежать ошибок.
Написано на основе skill SKILL.md. Каждый сценарий использования проверен по цитате из него.
Как установить навык git-sync
Каждая команда копирует папку навыка в каталог навыков клиента. Перезапустите клиент или начните новую сессию, чтобы загрузить его.Установка навыка git-sync в Плагин
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
Установка навыка git-sync в Claude Code
~/.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-syncУстановка навыка git-sync в Claude Code (project)
.claude/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync .claude/skills/git-syncУстановка навыка git-sync в Codex
~/.agents/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.agents/skills/git-syncУстановка навыка git-sync в Gemini CLI
~/.gemini/skills/git-sync/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-sync ~/.gemini/skills/git-syncУстановка навыка git-sync в 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
Открыть на 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
Файлы в этом навыке
3Вопросы о навыке git-sync
Как установить навык git-sync в Claude Code?
Выполните npx degit mgiovani/cc-arsenal/skills/git-sync ~/.claude/skills/git-sync. Claude Code загружает навыки из ~/.claude/skills (все проекты) или .claude/skills (один проект) и использует навык, когда его описание соответствует задаче.
Какие клиенты могут использовать навык git-sync?
Любой клиент, который читает формат Agent Skills: Claude Code, Codex, Gemini CLI и claude.ai (загрузить как ZIP). Скрипты в навыке выполняются только там, где клиент разрешает выполнение кода.
Как синхронизировать ветку с конкретной базовой веткой?
Вы можете указать базовую ветку с помощью флага --base, например: /git-sync --base develop.
Можно ли использовать этот инструмент для синхронизации форка с оригинальным репозиторием?
Да, используйте флаг --upstream, чтобы синхронизироваться с upstream remote вместо origin.
Что произойдет, если в рабочем каталоге есть незакоммиченные изменения?
Если вы используете флаг --stash, инструмент автоматически сохранит ваши изменения во stash перед синхронизацией и применит их (pop) после завершения процесса.