By now, you've learned most of the day-to-day commands and workflows that you need to manage or maintain a Git repository for your source-code control. You've accomplished the basic tasks of tracking and committing files, and you've harnessed the power of the staging area and lightweight topic branching and merging.
Now you'll explore a number of very powerful things that Git can do that you may not necessarily use on a day-to-day basis but that you may need at some point.
Git allows you to specify specific commits or a range of commits in several ways. They aren't necessarily obvious but are helpful to know.
You can obviously refer to a commit by the SHA-1 hash that it's given, but there are ...