Regenerate plugins/*/skills/ from plugins/*/.apm/ after the previous four commits, via scripts/sync-plugin-content.sh --all. The mirror is generated output (ADR-0017) that check-plugin-content-sync's pre-push hook diffs against .apm/; nothing here is hand-edited. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP
2.4 KiB
topic, source_keys
| topic | source_keys | ||
|---|---|---|---|
| pull |
|
Pulling
Default strategy: --ff-only. It fails on divergence, which forces a conscious choice instead of an accidental merge commit.
- Fast-forward only:
rtk git pull --ff-only— the recommended default - Rebase:
rtk git pull --rebasereplays your commits on top for linear history, but rewrites SHAs. Verify nothing being replayed has been pushed: rebasing published commits breaks everyone downstream. - Merge:
rtk git pull --no-rebase— three-way merge commit, preserves original commits, non-linear - Rebase preserving merges:
rtk git pull --rebase=mergeskeeps intentional local merge commits during the replay - Stage without committing:
rtk git pull --squashcollapses incoming commits into staged changes; you write the message - Merge strategy: Git 2.34+ defaults to
ort(recursiveis now an alias for it). Strategy options such as-X ours,-X theirs,-X ignore-space-changepass through unchanged. - Submodules:
--recurse-submodulesonly fetches submodules already checked out. Newly added ones are not initialized — use thegit-submodulesskill for those.
On divergence
A pull that diverges with no strategy configured fails, and that failure is the useful outcome. Report the divergence and the three ways out — --ff-only, --rebase, --no-rebase — and let the caller choose. Auto-merging a diverged branch buries a decision that belongs to the human.
Config precedence
--ff-only is not Git's default on an unset config, and never has been. Older versions silently
merged on divergence; current ones refuse outright — verified on Git 2.39.5, a divergent pull with
nothing configured prints the reconciliation hint and exits 128 with
fatal: Need to specify how to reconcile divergent branches. The behaviour therefore still varies
by installed version, and neither variant is the one you want. Set it explicitly.
Highest wins:
- Command-line flag (
--ff-only/--rebase/--no-rebase) pull.rebaseconfig (global or local)branch.<name>.rebase(branch-specific override)branch.autoSetupRebase(set automatically when the tracking branch was created)
rtk git config pull.ff only # deterministic default across Git versions
rtk git config --global pull.rebase true
rtk git config branch.develop.rebase false # develop always merges, regardless of the global default