Git blame: How to ignore white-space modifications

Updated . Posted . Visible to the public.

When doing a git blame, git will blame the person who added or removed white space in a line (e.g. by indenting), not the person who originally wrote the code.

Say git blame -w to ignore such white-space changes. You want this. \
Note that you can also use it when diffing: git diff -w.

Example

Consider this method, created by a user in commit d47bf443:

def hello
  'world'
end

^

$ git blame foo
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 1) def hello
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 2)   'world'
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 3) end

Now it's being changed to:

def hello
  if world?
    'world'
  else
    'universe'
  end
end

Here is how Git blames those lines with and without the -w switch:

$ git blame foo
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 1) def hello
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 2)   if world?
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 3)     'world'
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 4)   else
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 5)     'universe'
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 6)   end
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 7) end

^

$ git blame -w foo
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 1) def hello
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 2)   if world?
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 3)     'world'
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 4)   else
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 5)     'universe'
f5fae4c1 (Señor Foo     2012-12-19 14:47:36 +0100 6)   end
d47bf443 (Arne Hartherz 2012-12-19 14:44:38 +0100 7) end
Arne Hartherz
Last edit
License
Source code in this card is licensed under the MIT License.
Posted by Arne Hartherz to makandra dev (2012-12-19 13:48)