Back to lessons

Hosting Operations

Revert the Suspect Release Commit

The suspect release has already been shared, and you need a rollback commit that preserves branch history.

Command

cd /lab/git-recovery-rollback && git restore -- app/config.yml && git revert --no-edit release-2026-06-25-1030

What changed

The dirty config line is discarded, then a new local revert commit is created inside the disposable demo repository.

Danger

caution

When to use it

Use when a bad commit is already published or shared and rollback should be represented as a forward-moving commit.

When not to use it

Do not use revert blindly when the bad release included database migrations or external side effects that need a separate rollback plan.

Undo or recovery

Reset the disposable fixture branch back one commit or recreate the fixture.

Expected output

Git restores the dirty file, creates a revert commit, and the recent log shows the new Revert commit above the suspect release.

demo script

Disposable terminal steps

  1. cd /lab/git-recovery-rollback && git status --short && git log --oneline --decorate -3
  2. cd /lab/git-recovery-rollback && git restore -- app/config.yml && git revert --no-edit release-2026-06-25-1030
  3. cd /lab/git-recovery-rollback && git log --oneline --decorate -4

simulated output

What it looks like

disposable vessel
::fixture-ready::
$ cd /lab/git-recovery-rollback && git status --short && git log --oneline --decorate -3
 M app/config.yml
?? releases/current
de583c6 (HEAD -> main, tag: release-2026-06-25-1030) Release 2026-06-25 10:30
c15c7c6 (tag: release-2026-06-25-1000) Release 2026-06-25 10:00
ddb9d51 (tag: release-2026-06-24-1700) Release 2026-06-24 17:00
::exit-code::0
$ cd /lab/git-recovery-rollback && git restore -- app/config.yml && git revert --no-edit release-2026-06-25-1030
[main 13b32e2] Revert "Release 2026-06-25 10:30"
 Date: Fri Jun 26 00:27:39 2026 +0000
 4 files changed, 3 insertions(+), 6 deletions(-)
 delete mode 100644 db/migrate.sql
 delete mode 100644 releases/2026-06-25-1030/VERSION
::exit-code::0
$ cd /lab/git-recovery-rollback && git log --oneline --decorate -4
13b32e2 (HEAD -> main) Revert "Release 2026-06-25 10:30"
de583c6 (tag: release-2026-06-25-1030) Release 2026-06-25 10:30
c15c7c6 (tag: release-2026-06-25-1000) Release 2026-06-25 10:00
ddb9d51 (tag: release-2026-06-24-1700) Release 2026-06-24 17:00
::exit-code::0

YouTube Short

Revert, do not rewrite.

If the bad release commit is already shared, create a revert commit. History keeps moving forward and the rollback is reviewable.

LinkedIn hook

Undo a bad release with a new commit instead of rewriting history.

Question: When do you prefer git revert over resetting a release branch?

experiments

A/B tests to run

Metric: completion_rate

A: Revert shared history.

B: Rollback with a new commit.