← ClaudeAtlas

git-pull-rebase-traplisted

Use before `git pull` where `pull.rebase` may be `true`. `--no-ff` does NOT stop a rebase under `pull.rebase=true` (silently ignored); it rewrites every local commit SHA. Check config first.
MrBinnacle/skills · ★ 0 · Code & Development · score 70
Install: claude install-skill MrBinnacle/skills
# git-pull-rebase-trap ## The trap `git pull --no-ff` does **not** override `pull.rebase=true`. The `--no-ff` flag applies to *merge* operations; when the effective pull strategy is rebase, `--no-ff` is silently ignored and the rebase proceeds anyway. When local has diverged from origin (e.g., 22 local commits + N remote commits), this rewrites every local commit with a new SHA. Any artifact that referenced the old SHAs — state files, gate-event ledgers, retrospection logs, release notes — is now stale and must be backfilled. ## When this fires Any of these conditions: - `git config pull.rebase` returns `true` (globally or per-repo) - `git config branch.<current>.rebase` is `true` - A `[pull] rebase = true` block exists in `.git/config` or `~/.gitconfig` The trap fires whether you pass `--no-ff` or no flag at all: the configured pull strategy is rebase, so a merge-side flag is simply ignored and your commits are rebased. **`--ff-only` is the exception** — on diverged history it refuses outright (git aborts with a "cannot fast-forward" message; the exact wording varies by git version) instead of silently rebasing. That makes `--ff-only` a loud guard rail rather than a silent SHA rewrite — but not a usable everyday pull, since it also refuses every legitimate diverged sync. ## Pre-flight (before `git pull`) ```bash git config --get pull.rebase git config --get branch.$(git branch --show-current).rebase ``` If either returns `true`, do NOT use