Blaming Git explained with examples: Who touched the code? (2023)

Version control tools are great for a variety of tasks, including recording ownership of changes. Of course, Git is no exception, among many others.Git commandsyou should be aware of thatthe idiot is to blame.

You can use this command to search for code changers at different levels of detail. As you'll see, this information is valuable in many situations, such as investigating when and how bugs were introduced.

In this guide, you will learn more about this command: how exactly it works, what are the main command line options, how it differs from similar commands, and much more. let's dive in


If you want to follow our examples, you need to meet some basic requirements:

  • Knowledge of the command line.

  • git installed

  • Knowledge of at least the most basic Git commands.

  • Optional Visual Studio Code (VS Code)

What does Git Blame do in Git?

During development, you often want to know who made a particular change. This is useful, for example, when you want to determine when an error occurred. Or maybe you have trouble understanding some code and want to ask the author directly.

git bugis a command that can tell you who was the last person to change each line of code and when.

GitBlame: How does it work?

In its simplest form, this command "blames" all lines in the file; H. gives authorship. The syntax is:the idiot is to blame .

(Video) What is Git Blame? | Git Blame Command in Detailed | Git Tutorial for Beginners | Java Home Cloud

Let's see an example. Start by cloning the repository on GitHub:

Clone of Git

Once the cloning is complete, navigate to the folder you created:

plate here

Now it shows the authorship of the file:

Git Blame

The result will look like this:

Let's analyze it in a little more detail.

^2e9344d (Hacked 2012-03-04 14:23:45 -0800 1) # SeeGit: The Git repository viewer ^2e9344d (Hacked 2012-03-04 14:23:45 -0800 2) 04 16:06 :17 -0800 3) This is a little experiment to create a realtime git repository viewer.32aef720 (Haacked 2012-03-04 16:06:17 -0800 4)

As you can see, the results arethe idiot is to blamecontain the following parts for each line:

  • First, the commit hash that identifies the commit that last modified the row.

  • Then the name of the author.

    (Video) how I use git blame (beginner - intermediate) anthony explains #528

  • confirm timestamp

  • Finally, the actual content of the file line, preceded by a number

Git Blame: go deeper

Now that we've covered the basics, let's dig a little deeper.

differences and similarities

Let us briefly explain howthe idiot is to blamerefers to other Git commands.

Git Blame vs. Git Annotation

There is another command that is very similar.the idiot is to blamecalledgit annotation. What is the difference between them? In short, they are practically the same. I quote fromdocumentation:

"The only difference between this command and git-blame[1] is that they use slightly different output formats, and this command only exists for backwards compatibility, support for existing scripts, and to provide a more familiar command name for people." that use other SCM systems they go to."

Here are the results to compare.the idiot is to blameIgit annotationNext to each other:

Git Culpa a Git Log

Git registryis one of the most popular commands in Git; They use it to learn more about the history of the project. with syntaxgit log –You can use it to see all the commits that were in a particular file. So how is it different fromthe idiot's fault?

in summary,Git registrygives you the overall history of the file across the entire timeline.git bugOn the other hand, you will know who last touched each line of code. Both are useful, but each produces very different results.

Git Blame contra Git Bisect

go halfwayis a powerful command that allows you to search the entire history of your projectbinary search. You start by specifying a point in the story where there is a "thing" whose source you want to identify (this is usually an error), and another point where you are sure the code does not contain that item.go halfwayIt will then guide you through the history, allowing you to rate each stop as good or bad until the bisect command identifies the commit that caused the error.

When should the word "halve" be used instead of the word "fault"? Very simple: you usually usegit in halfin situations where you know little about how the error arose. If you don't even know which file is responsible for the problem, how are you going to use it?the idiot is to blame?

(Video) #14 Who Changed which line (git blame)

In other words:git bugis when you know where to look.


As with most Git commands:the idiot is to blamesupports many different options. Now we will show you some of the most important:

-e: show the email of the author

As you have seen, the standard output of the programthe idiot is to blamedoes not contain the author's email address. use these-miOption if you want to attach an email.

-l : print long commit hash

As you may have already noticed, the standard output shows the hash of the commit. If you want the full commit hash, add it-lOption (lowercase letter L).

-L: specify a line range

Now that we've discussed the lowercase "L" option, it seems appropriate to use the uppercase "L" as well.

you use-Lpossibility of providingthe idiot is to blameseries of lines instead of blaming the entire file. Let's take the README file again as an example, but this time only lines 2 to 5.

Git Blame -L 2,5

The result looks like this:

--first-parent : Track only the first parent commit of a merge commit

Passivein Git, it can have zero, one, or multiple parents. Root commits have zero parents, most commits have one parent ito combineAdoptions can have two or more parents.

He--first fatherThis option tells Git to only follow the first parent in merge commits when assigning blame to a file. This is extremely useful, for example, when he needs to ignore changes made to another file.Zweig.

some questions

We have covered some options that you may find useful while you workthe idiot is to blameon the command line.

(Video) Git Blame

However, when working in a GUI context, credit information is often needed. Now we will see how to use it.the idiot is to blamein VS Code and in the GitHub interface.

How to use Git Blame in VS Code?

VS Code is currently one of the most popular source code editors. Offers integration with Git, but extensions are required to use itthe idiot is to blame.

One of those extensions is an extension with the appropriate namegit bugOnce installed and activated, VS Code will show who last touched each line of code in the status bar:

This information changes as you move through the lines of the file. If you click on a label that shows who last touched a line of code, a popup will appear, providing more context for the change:

Finally, clickvistaIt will take you to GitHub, to the specific commit page.

GitLensis a popular VS Code extension that, apart from the blame function, provides many other useful Git features in the code editor. This is how it looks in practice:

How to configure Git Blame on GitHub?

If you're using GitHub and want to see authorship information, there's a very easy way to do it. go to for examplefrom the repositoryWe clone it before and open the README file, or justClick hereto get directly.

Regardless of how you get there, you'll notice that there's a Blame button in the upper right corner of the file display:

Just click on Debt to see a nice visual representation of the debt information for the file:


Despite its negative-sounding namethe idiot is to blameis an extremely valuable Git command. This allows you to specify blame information for each line of a single file.

This information can help you understand how the error occurred, attribute the change to a business cause, or find the email address of someone you can contact for more information on a specific feature.

(Video) Git Tutorial Part 7: How to Use Git Blame and Git Grep

As with most Git commands, you can make changesthe idiot is to blamebehavior based on many of its choices. The ones you saw today barely scratch the surface. Feel free to keep playing around and experimenting with the command to learn more about all of its features.

Thank you for reading!

This post was written by Carlos Schults.carlosHe is a consultant and developer with experience building desktop, web, and mobile applications. Although his primary language is C#, he has experience in multiple languages ​​and platforms. His main interests are automated testing, version control and code quality.


What is the blame function in git? ›

The git blame command is used to examine the contents of a file line by line and see when each line was last modified and who the author of the modifications was. The output format of git blame can be altered with various command line options.

How do I blame a specific line in git? ›

The '''blame''' command is a Git feature, helps you determine who changed the specific lines of each file. you can run this command on Git bash and specified the lines. -L is where you want to see line changes in the file and after comma sign you can define how many line after current line should proccessed.

How do I find out who wrote a line in git? ›

git blame is a very good tracking command for Git. git blame shows the author information of each line of the project's last modified source file. You can find the author name, author email, the commit hash etc of the last modified source file line by line.

How do I find out who wrote a code in Vscode? ›

This can be easily done with the powerful git blame command in VS Code. You can use it to identify who authored each line of code in any given file. In this post, we are going to look into different ways to use the git blame command in VS Code. A lot of commands can be required to check each file.

What is blame in source control? ›

Git blame is the command that can tell you who was the last person to modify each line of code and when.

How to use blame in gitlab? ›

Git file blame (FREE)
  1. Go to your project's Repository > Files.
  2. Select the file you want to review.
  3. In the upper-right corner, select Blame.

How do you pass the blame? ›

5 Tips to Get Past the Blame Game
  1. #1 Blaming is not going to give you anything positive in return. What is the use of blame? ...
  2. #2 Before blaming someone, analyze your purpose of blaming. ...
  3. #3 Blame reflects lack of communication. ...
  4. #4 Switch from blame to constructive criticism. ...
  5. #5 Above all, be patient.

How do you not assign blame? ›

How to Stop Playing the Blame Game
  1. Recognize when you're blaming your circumstances or other people. Notice if you use words like “never” and “always” when talking to others. ...
  2. Recognize that you and every person in your life are equals. ...
  3. Own your own story. ...
  4. Pause before responding. ...
  5. Apologize.
Apr 18, 2021

How to resolve git errors? ›

How to fix Git error: you need to resolve your current index first
  1. Make sure all your changes are committed. ...
  2. Abort the merge and return to the previous state. ...
  3. Resolve the reported conflicts and commit. ...
  4. If this is a git-checkout , you can force it with the -f option.

How to track history of a line in git? ›

Line Log Search

Simply run git log with the -L option, and it will show you the history of a function or line of code in your codebase.

How to check total lines of code in git? ›

To count the number of lines in a Git repository, you will need to use the “git ls-files” command. This command will list all the files in the repository and their line counts. Once you have the list of files and their line counts, you can use the “wc” command to count the total number of lines in the repository.

How to see line endings of files in git? ›

To tell what line endings a file in the repository is using, use git show to extract the file's contents. This will give you the contents without changing the line endings.

How do I see Git line history in Visual Studio Code? ›

Open the file to view the history, and then Press F1 and select/type "Git: View History", "Git: View File History" or "Git: View Line History".

How to see Git history in Visual Studio Code? ›

When you have repository open in Visual Studio code, you can execute the command Git: View History (git log) from the command Plate. This will open the Git History Window with all change logs for the repository. You can then select individual commits for detailed change logs for each of them.

What are the 4 theories of blame? ›

Nevertheless, the taxonomy to follow is consonant with much of the literature in classifying theories according to the activity or mental state that is thought to constitute blame. According to this way of carving things up, we get four categories: cognitive, emotional, conative, and functional accounts of blame.

What are examples of blaming? ›

to say or think that someone or something did something wrong or is responsible for something bad happening: Don't blame me (= it is not my fault) if you miss the bus! Hugh blames his mother for his lack of confidence. Hugh blames his lack of confidence on his mother.

What are examples of blaming statements? ›

Statements including the words always and never, as well as statements like “Nobody understands” and “It is their entire fault,” are examples of blaming statements that prevent people from taking responsibility for their actions or seeking help when facing difficulty.

What is raw and blame in GitHub? ›

The Raw button, like the name suggests, opens the file in a raw form, meaning that any HTML formatting disappears. This is particularly useful when you want to download a single file.

How to check conflict files in GitLab? ›

Resolve conflicts in the inline editor

On the left sidebar, select Merge requests and find the merge request. Select Overview, and scroll to the merge request reports section. Find the merge conflicts message, and select Resolve conflicts. GitLab shows a list of files with merge conflicts.

How to commit to source control git? ›

You can type a commit message above the changes and press Ctrl+Enter (macOS: ⌘+Enter) to commit them. If there are any staged changes, only those changes will be committed. Otherwise, you'll get a prompt asking you to select what changes you'd like to commit and get the option to change your commit settings.

What are the two types of blame? ›

Two types of self-blame--behavioral and characterological--are distinguished. Behavioral self-blame is control related, involves attributions to a modifiable source (one's behavior), and is associated with a belief in the future avoidability of a negative outcome.

What are the three forms of blame? ›

The past tense of blame is blamed. The third-person singular simple present indicative form of blame is blames. The present participle of blame is blaming. The past participle of blame is blamed.

What are the stages of blaming? ›

These steps are lay blame, justify, shame, obligation and responsibility.

How do you handle blame shifting? ›

Techniques to Respond to a Blame-Shifter
  1. Confrontation. Confrontation is the primary tool. ...
  2. Ban the blame and defensiveness; don't take it personally. Mitch also did not act defensively and he did not take her efforts to shift blame personally. ...
  3. Offer context; focus on the event, not the person's character.
Feb 19, 2023

How do you resolve conflict without blame? ›

Some Ways to Resolve Conflicts
  1. Talk directly. Assuming that there is no threat of physical violence, talk directly to the person with whom you have the problem. ...
  2. Choose a good time. ...
  3. Plan ahead. ...
  4. Don't blame or name-call. ...
  5. Give information. ...
  6. Listen. ...
  7. Show that you are listening. ...
  8. Talk it all through.

Why is blame toxic? ›

Blame also kills healthy, accountable behaviors. Nobody will take accountability for problems if they think they'll be punished for doing so. Furthermore, learning and problem solving go out the window in workplaces that tolerate blame. Instead of learning from mistakes, blamed employees tend to hide their mistakes.

How to avoid code conflict in git? ›

Pay attention and communicate
  1. creating branches.
  2. creating pull requests.
  3. Avoid allowing pull requests to become stale.
  4. Make sure you're not changing the same lines of code before merging a prior change.
  5. Establish and follow formatting rules.
Jun 14, 2022

How do I resolve conflicts in git VS code? ›

Resolve merge conflicts
  1. Go over your conflicts line by line, and choose between keeping the right or the left side by selecting the checkboxes.
  2. Keep or ignore all of your conflicting changes.
  3. Manually edit your code in the Result window.
Dec 15, 2022

What is a git conflict and how are they resolved? ›

A conflict arises when two separate branches have made edits to the same line in a file, or when a file has been deleted in one branch but edited in the other. Conflicts will most likely happen when working in a team environment. There are many tools to help resolve merge conflicts.

How to check all previous git commands? ›

On, you can access your project history by selecting the commit button from the code tab on your project. Locally, you can use git log . The git log command enables you to display a list of all of the commits on your current branch. By default, the git log command presents a lot of information all at once.

How to check line changes in git? ›

Inspecting Local Changes

Without further options, "git diff" will show us all current local changes in our working copy that are unstaged. If you want to see only changes that have already been added to the Staging Area, "git diff --staged" is your command of choice.

Which tool visualize git history? ›

gitk and git-gui

gitk is a graphical history viewer. Think of it like a powerful GUI shell over git log and git grep . This is the tool to use when you're trying to find something that happened in the past, or visualize your project's history.

How many lines of code is a lot? ›

That said, 10,000 lines of code is a lot in one file. Even people who don't care about number of lines of code at all rarely have more than 2,000 to 3,000.

How do you know how many lines of code VS code? ›

Here's how.
  1. On the menu bar, choose Tools > Options. Expand the Text Editor node, and then select either the language you're using or All Languages to turn on line numbers in all supported programming languages. Tip. ...
  2. Select the Line numbers checkbox to show line numbers, or clear the checkbox to hide line numbers.
Mar 9, 2023

How many lines of code are there? ›

The Android operating system runs on 12-15 million lines. The Large Hadron Collider uses 50 million lines.

How do I find the total lines in a file? ›

We use the wc command to count the lines in a file. Adding the −l flag gives us the total line count and the filename. We can use the wc −l (word count) command to see how many lines there are in our file.

How do I know if a file is LF or CRLF? ›

use a text editor like notepad++ that can help you with understanding the line ends. It will show you the line end formats used as either Unix(LF) or Macintosh(CR) or Windows(CR LF) on the task bar of the tool. you can also go to View->Show Symbol->Show End Of Line to display the line ends as LF/ CR LF/CR.

How do I check lines in a file bash? ›

The wc command is used to find the number of lines, characters, words, and bytes of a file. To find the number of lines using wc, we add the -l option. This will give us the total number of lines and the name of the file.

Can you see lines of code in GitHub? ›

In a GitHub repository you can see “language statistics”, which displays the percentage of the project that's written in a language. It doesn't, however, display how many lines of code the project consists of.

How to see history of changes in a folder in git? ›

In addition to reviewing the history for the whole project or for a specific file, you can check which changes were made in specific folders. Select a directory or multiple directories in the Project tool window and choose Git | Show History from the context menu.

How do you view all system settings for git via command line? ›

If you want to check your configuration settings, you can use the git config --list command to list all the settings Git can find at that point: $ git config --list Doe user.

How do you identify Coding and decoding? ›

Coding is a part of the logical reasoning section used to encrypt words, numbers in specific patterns or codes using particular rules and regulations. Decoding is the process that is used to decrypt the patterns into original forms from the given forms.

How do you explain code to someone? ›

Explain the code in the same language the users use. Explain the code using standard programmer terms, e.g. Terms like "buffer", "list", "singleton" are familiar to most of us, as are common mathematical terms. Explain what you're doing in terms of the inputs and outputs.

How is the brain written in code? ›

In a certain code, BRAIN is written as * % ÷ # × and TIER is written as $ # + %. How is RENT written in that code? Correct answer is option 'D'.

What information does git status show? ›

The git status command displays the state of the working directory and the staging area. It lets you see which changes have been staged, which haven't, and which files aren't being tracked by Git. Status output does not show you any information regarding the committed project history.

What is blame in subversion? ›

Subversion has a command for this, and it is called blame (guess why). Subversion creates a blame of a file by adding information about the author who committed a line, the revision the line was last changed and the date.

What are the functions of git commands? ›

Git commands
  • git add. Moves changes from the working directory to the staging area. ...
  • git branch. This command is your general-purpose branch administration tool. ...
  • git checkout. ...
  • git clean. ...
  • git clone. ...
  • git commit. ...
  • git commit --amend. ...
  • git config.

How to find which commit added a file in git? ›

Find what file changed in a commit

To find out which files changed in a given commit, use the git log --raw command. It's the fastest and simplest way to get insight into which files a commit affects.

What are the two types of actions in GitHub? ›

Types of actions. You can build Docker container, JavaScript, and composite actions.

Does GitHub check for malicious code? ›

You can use code scanning to find security vulnerabilities and errors in the code for your project on GitHub. Code scanning is available for all public repositories on

What does green and red mean in GitHub? ›

The red one is the diagram of how many times the repository has been cloned. The green one is the diagram of how many people have visited your repository. The last blue is a summary of where the repository was discovered and which files are watched.

What are the 4 functions of Git? ›

The GI tract functions to transport, absorb, digest, and excrete food and liquids taken in by the mouth.

What are the four main activities of Git? ›

What Are the Four Main Functions of the Digestive System?
  • Motility. Food moves through the digestive tract due to a process called peristalsis, which is the movement of muscles in the GI tract that move the food through the digestive system. ...
  • Secretion. ...
  • Digestion. ...
  • Absorption.

What is the three main function of Git? ›

The principal functions of the gastrointestinal tract are to digest and absorb ingested nutrients, and to excrete waste products of digestion. Most nutrients are ingested in a form that is either too complex for absorption or insoluble, and therefore, indigestible or incapable of being digested.

How to remove unwanted commits in git? ›

To remove the last commit from git, you can simply run git reset --hard HEAD^ If you are removing multiple commits from the top, you can run git reset --hard HEAD~2 to remove the last two commits. You can increase the number to remove even more commits.

How does git manage branches internally? ›

A branch in Git is simply a lightweight movable pointer to one of these commits. The default branch name in Git is master . As you start making commits, you're given a master branch that points to the last commit you made. Every time you commit, the master branch pointer moves forward automatically.

How do I undo a commit? ›

Undoing Your Last Commit (That Has Not Been Pushed)
  1. In your terminal (Terminal, Git Bash, or Windows Command Prompt), navigate to the folder for your Git repo.
  2. Run this command: git reset --soft HEAD~ ...
  3. Your latest commit will now be undone.


1. git blame
(Absolute Code)
2. Git Commit Message - You Are Not Doing It Correctly
(Monsterlessons Academy)
3. Searching GitLab repositories with Git file history and Git blame (for non-technical users)
(GitLab Unfiltered)
4. Git bisect tutorial. How to find a bad bug commit.
5. GitLens Tutorial: How to Use GitLens in VS Code
6. What Changed & Why | How to Craft Great Git Commit Messages
(Brett Codes)


Top Articles
Latest Posts
Article information

Author: Rueben Jacobs

Last Updated: 10/20/2023

Views: 5531

Rating: 4.7 / 5 (77 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Rueben Jacobs

Birthday: 1999-03-14

Address: 951 Caterina Walk, Schambergerside, CA 67667-0896

Phone: +6881806848632

Job: Internal Education Planner

Hobby: Candle making, Cabaret, Poi, Gambling, Rock climbing, Wood carving, Computer programming

Introduction: My name is Rueben Jacobs, I am a cooperative, beautiful, kind, comfortable, glamorous, open, magnificent person who loves writing and wants to share my knowledge and understanding with you.