Published April 10, 2020
Updated April 10, 2020
Git Rebase Drop
Demonstrates how to delete commits when rebasing.
Transcript
# Hello and welcome to the Alchemists Screencasts! # Today, we'll learn about Git Rebase Drop. # For context, here's a few Ruby scripts we've been working on: l # âšī¸ `l` is aliased to `ls -alhT`. # Notice the `add.rb` and `multi.rb` scripts. # Here's the associated commit: gl
ghow # đĄ See the *Git Log Pretty* screencast to learn more about the `gl` alias. # âšī¸ `ghow` is a fancy function for `git show` but will gloss over that for now. # Turns out we don't need the `multi.rb` implementation, only `add.rb`. # This is where using Git Rebase Drop can help: git rebase --interactive
# If you didn't catch all of that, feel free to rewind and watch again. đ # Let me explain, though: # 1. "p" (pick) was changed to "d" (drop) so Git knows to *drop* the commit. # 2. We saved and exited to let Git perform the instruction. # 3. Git then deleted the commit we marked as *drop*. # To confirm: gl l # Notice the commit with the `multi.rb` implementation is gone. đ # What if there was an alternative way to dropping commits, though? # Well, you're in luck, there is. # To demonstration, I'll need to restore the original commit via Git Reflog: git reflog # We don't have time, during this screencast, to explain Git Relog more. đ # Just know it's a powerful tool for debugging or fixing local mistakes. đ # In this case, we only need to restore our history before the rebase:
git reset --hard gl # Notice I picked the SHA prior to the rebase. # Also notice the "multiplication" implementation commit is back. đ # Great, now we can rebase again by dropping that commit. # We'll do this via deleting the line entirely: git rebase --interactive
# đĄ See the *Git Rebase Pick* screencast for adding lines (i.e. opposite of the above). # Due to deleting the line with the commit we didn't need, it is now gone: gl l # This can be a faster way to remove several commits you don't need. # Now you have two solutions for dropping commits you no longer need. đ # Enjoy! # https://alchemists.io # âŋ đ đ đ đ đ đ