Module
Module 5 of 6Lesson 2 of 2~18 min

Undo a change without making things worse

Lesson 2 of the module "Safety nets and rollback" in the course "Git for PMs: ship as a team without putting production at risk".

Lesson objective

By the end of this lesson, you will be able to choose the right way to undo a change depending on where it is (file, local commit, shared branch, main, production): git restore, git reset, git revert, a pull request's Revert button or a deployment rollback, without ever forcing shared history.

Where it fits

Safety nets and rollback

What stops a mistake from reaching users, and what do I do if it gets through anyway?

Lessons in this module

  1. The safety nets that protect production
  2. Undo a change without making things worse (this lesson)

What you will learn in the course

This lesson is part of the course Git for PMs: ship as a team without putting production at risk

  • Read an existing repository and its pipeline (README, CONTRIBUTING, CODEOWNERS, CI workflows, environments) to know who reviews what, what gets checked and what goes to production, and when.
  • Work on a short-lived branch with everyday Git commands (or their GitHub equivalents), small commits named by convention, and stay in sync with main.
  • Open a small, well-described pull request, get the right review, pass the required checks, validate the preview and choose the merge method.
  • Resolve a simple merge conflict calmly, on the command line or in GitHub, and know when to ask for help.
  • Assess a repository's safety nets (branch protection, required checks, mandatory review, feature flags, staging, progressive rollout) and propose the missing ones.
  • Choose the right way to undo a change (restore, revert, reset, deployment rollback) depending on whether it is local, pushed, merged or already in production.
  • Keep an AI coding agent under control in a team repository (dedicated branch, written rules, protected secrets, proof of verification, human review before merge).
  • Tie merged changes to a release (tag, semantic versioning, changelog) and write release notes that help users.