← ClaudeAtlas

no-force-push-a-reviewed-prlisted

On a PR that already has reviewers, push follow-up changes as plain new commits only — never `git commit --amend`, never `git push --force` / `--force-with-lease`. Force-push rewrites the commits reviewers' inline comments anchor to, resets the GitHub review state, and forces a cold re-read — the opposite of the incremental trust you are building. Use whenever you push any change to a PR someone has already looked at. Trigger terms: force-push, --amend, --force-with-lease, rebase, "clean up history", pushing to an under-review PR.
serhiy-bzhezytskyy/contrib-receipts · ★ 0 · Code & Development · score 75
Install: claude install-skill serhiy-bzhezytskyy/contrib-receipts
# No force-push on a reviewed PR ## Purpose Once a reviewer has read your PR, GitHub anchors their inline comments to specific commits and diff positions. A force-push (or an amend followed by a force-push) rewrites those commits, so GitHub can no longer tell what changed since their last look — comments go "outdated", the diff resets, and the reviewer has to re-read the whole thing cold. That cold re-read is exactly the cost incremental commits exist to prevent. On a shared PR, force-push is not a style choice: it breaks other people's review-in-progress. Squashing/cleanup, if the house wants it, happens at merge time by the committer — not mid-review by you. ## When to use - Any push to a PR that has at least one reviewer or review comment. - Any urge to `--amend` "just to fix the commit message" on a shared branch. - Any rebase that would rewrite already-reviewed commits. ## When NOT to use No reviewer or review comment is on the branch yet (or it's your own solo repo) — before anyone has looked, a rebase/amend anchors nothing and is fine. ## The practice (checklist) - [ ] Default to a **new `git commit`** for every follow-up change, so each reviewer sees exactly the delta since their last look. - [ ] **No `git commit --amend`** on a shared branch — even to fix a stale message. - [ ] **No `git push --force` / `--force-with-lease`** on a shared branch. - [ ] Leave squashing/history cleanup to the committer **at merge time**. - [ ] If you already force-pushed,