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

Rebasing

Rebasing is nothing more than taking one branch and adding it to the tip of another, where the tip is simply the last commit in the branch. For example, suppose you have the following structure:

Figure 5.1: Git structure

You can't do a fast forward here, because Main has moved on since you branched from it. You can do a true merge, but a true merge adds a commit to your history every time you do one:

Figure 5.2: True merges

A rebase solves the same problem, but without adding merges to the commit history.

Notice that as you review this history, you have to skip over a significant number of commits since they are just merges. Rebase eliminates most of these commits.

Here comes the important part:

  • You merge branch Feature1 into Main, but you rebase Feature1 onto Main.
  • Returning to our earlier example, if you rebase Feature1 onto Main, it looks like this:

Figure 5.3: After the rebase

  • There is...