Book Image

Git for Programmers

By : Jesse Liberty
Book Image

Git for Programmers

By: Jesse Liberty

Overview of this book

Whether you’re looking for a book to deepen your understanding of Git or a refresher, this book is the ultimate guide to Git. Git for Programmers comprehensively equips you with actionable insights on advanced Git concepts in an engaging and straightforward way. As you progress through the chapters, you’ll gain expertise (and confidence) on Git with lots of practical use cases. After a quick refresher on git history and installation, you’ll dive straight into the creation and cloning of your repository. You’ll explore Git places, branching, and GUIs to get familiar with the fundamentals. Then you’ll learn how to handle merge conflicts, rebase, amend, interactive rebase, and use the log, as well as explore important Git commands for managing your repository. The troubleshooting part of this Git book will include detailed instructions on how to bisect, blame, and several other problem handling techniques that will complete your newly acquired Git arsenal. By the end of this book, you’ll be using Git with confidence. Saving, sharing, managing files as well as undoing mistakes and basically rewriting history will be a breeze.
Table of Contents (16 chapters)
11
Finding a Broken Commit: Bisect and Blame
13
Next Steps
14
Other Books You May Enjoy
15
Index

Finding a Broken Commit: Bisect and Blame

Sooner or later, you are likely to find that you have a bug in your program that was introduced sometime in the past. You can go searching through all your prior commits, but that is time consuming and inefficient. Git provides a command, bisect, to take care of all the hard work for you.

Here's how it works: bisect asks you for a known "bad" commit. Most often this is the last commit. It then asks for a known "good" commit – that is, a commit that is known to work. You do not have to try out a variety of commits to find this; just far back enough that you can be sure it was working back then.

If you are cautious, you may want to check out the good commit and run it just to make sure.

Bisect will then do a series of binary searches looking to find the first bad commit. If you have good unit tests, bisect can do this on its own; otherwise you must test each commit it finds and report whether it is...