55

If I found a bug in my application, sometimes I need to know which commits have affected to the bug source code line. I'm wondering which is the best approach to do it with Git.

Ivan
  • 13,412
  • 15
  • 57
  • 91

5 Answers5

53

To see commits affecting line 40 of file foo:

git blame -L 40,+1 foo

The +1 means exactly one line. To see changes for lines 40-60, it's:

git blame -L 40,+21 foo

OR

git blame -L 40,60 foo

The second number can be an offset designated with a '+', or a line number. git blame docs

ahaurat
  • 3,537
  • 3
  • 23
  • 21
42

I'd use the git blame command. That's pretty much exactly what it is for. The documentation should get you started.

vcsjones
  • 133,702
  • 30
  • 291
  • 279
  • 1
    will this give me the entire line history or only the last one? What if the line has be modified more than once and i want to check the changes each time the line has been modified. – Yash Kalwani Sep 20 '19 at 07:17
9
git blame filename

is the best command to show you this info

Seth Robertson
  • 29,251
  • 6
  • 60
  • 53
9

If you only need the last change:

git blame

Otherwise, you could try to automatically find the offending change with

git bisect
Frank Schmitt
  • 28,996
  • 10
  • 68
  • 104
  • 1
    +1 for bisect. Good for trying to figure out which commit broke something without knowning exactly what is wrong. – vcsjones May 26 '11 at 19:24
1

You can use

git annotate filename (or)

git blame filename
Nayagam
  • 1,539
  • 15
  • 12