How to use Blame on GitHub to find the commit that changed that line or block of code – 059

First time I saw the Blame button, I was scared to put any of my code up on GitHub. I thought, “Why would I want people to publicly blame me?” Fortunately, the Blame functionality has absolutely nothing to do with its connotation.

The Blame button is more of a “Show the commit when this line or block of code was changed.” That’s it. With no blame implied! 🙂

For example, you can look at the 3rd line of the main.js file for my simple electron app.

Blame button for main.js

The timeline of events is as follows:

  1. at some time 7 months ago, I made a commit “added close button” that changed the 3rd line of code. I added “ipcMain” to the constants.
  2. shortly thereafter, about 7 months ago, I made a commit “appears in tray” that changed the 3rd line of code. I added “Tray” to the constants.

The blame button allows you to select a given line of code, e.g. the 3rd line in my example, and work your way backwards up the commit events…

In the image below, you’ll see the first line was added in my initial commit. Then I’ve made some modifications to the 3rd line. But the 4th line (some whitespace) has remained the same since the initial comment. But the 5th line was added alongside the changes to the 3rd line, and so on and so forth…

"appears in tray" commit for 3rd line of code

You have two options to proceed. You can either choose to click the “appears in tray” link to see the diff in the usual commit diff view,

diff showing Tray being added to list of consts

or you can click the box-looking button to the right of the 7 months ago commit date.

View blame prior to this change button

Clicking on the View blame prior to this change now shows you the file before the “added close button” commit was added. Why this commit? Because this “added close button” commit was the last time line #3 was changed after the “appears in tray” commit. You’re just walking back up the log for a given line of code.

image

A few things to notice:

  • the “appears in tray” commit has changed to “added close button” commit
  • line 3 only contains consts for app, BrowserWindow, and ipcMain
  • line 5 is different, because we’re looking at the history of the file when “added close button” was committed

Let’s go one more click up the chain.

View blame prior to this change for "added close button" 

Clicking on the View blame prior to this change for the “added close button” now shows the original file at the time of its initial commit.

Initial commit to the main.js file

You’ve now just walked all the way up the chain of changes to a given line of code.

Perhaps Pedigree is a better term than Blame? E.g. what’s the pedigree of this line of code? I only offer the word pedigree so the button icon could be a

One thought on “How to use Blame on GitHub to find the commit that changed that line or block of code – 059

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s