Demonstrates how to elegantly revert an existing Git commit.
# Hello and welcome to the Alchemists Screencasts! # Today, we'll look at revering Git commits. # We'll start by studying the commit history of this project: gl # The second commit on the `master` branch is what we want to revert: git revert <SHA> ghow # Notice the subject is a *wrapped* duplicate of the original subject. # Sadly, the body doesn't explain *why* the commit was reverted either. # We can do better by passing the `--no-commit` option to `git revert`. # Let's start over by removing the reverted commit: git reset --hard HEAD~1 gl # This time we'll explain the *what* and *why* of our actions. git revert --no-commit <SHA> git status --short --branch git diff --cached # Notice the `README.md` file is cached. # We can now make a *modified* commit of the original. # Additionally, the original Table of Contents is restored but outdated. # We'll regenerate the Table of Contents to pick up latest changes: bundle exec rake toc git diff # Excellent, the Tocer gem detected the *Usage* section was removed from the Table of Contents. # To proceed, we'll commit the changes. # Also, pay attention to how Git pre-populates our commit message: git add README.md git commit
ghow # There, much better. # Using Git revert in this fashion provides the following benefits: # 1. Allows reuse of an old commit in a modified way -- Handy when resurrecting old ideas. # 2. Keeps our Git history clean by crafting an understandable commit. # 3. Explains *why* the original commit was reverted. # Enjoy! # https://alchemists.io # ☿ 🜔 🜍 🜂 🜃 🜁 🜄