Git blame shows who made changes to which line of code for a given point in its history. This is useful if you are struggling to understand changes to a section of code as you can potentially contact the author and gain some insight.
Git blame works on individual files and so requires a filename, there are a host of options, for example
-e prints the
authors email address
-w ignores changes to white space and
-L 10,20 restricts output to the specified line
range. If you want a the blame for a specific revision then you must include the hash.
git blame -e -w -L 10,20 f923la git_blame.org
For more detailed information on the array of options refer to the official
documentation or see
git blame --help.
Some people don’t like the pejorative nature of the word blame. That’s ok though, with a tweak to your configuration its possible to use the alias praise or simply who instead.
# blame alias git config --global alias.praise blame git praise -L1,30 git_blame.org # who alias git config --global alias.who blame git who -L1,30 git_blame.org
Sometimes the case arises where you want to ignore blame. Perhaps the most common example is when an existing code base
has been linted to conform to a particular style guide. Looking at who performed these changes is not
informative and masks who made the changes and why. Its possible to ignore specific commits on the command line with
--ignore-revs <hash> <file>, but it will quickly become tedious to remember to ignore all blame across multiple
commits. Fortunately you can save the commits to ignore to the file
.git-blame-ignore-revs (along with comments) so
that they are stored. The full commit (40 characters) of hashes should be used.
# PEP8 compliance for module X c00177a6121f86c001f338feff3280fd576fdbf3 # PEP8 compliance for module Y db27fa5f18299ca631efc430512a3f358c2b154f
Now that you have the revisions in place to be ignored when reporting blame you can choose not to use it.
git blame --ignore-revs-file .gitblame-ignore-revs git_blame.org
…but this is tedious to remember to have to do each time and ideally others on your team should use this file too. You can configure Git to use this file by modifying the local configuration. Make sure to add it to your repository so that others can use it.
git config blame.ignoreRevsFile .git-blame-ignore-revs git add .git-blame-ignore-revs
For queries relating to collaborating with the RSE team on projects: email@example.com
Join our mailing list so as to be notified when we advertise talks and workshops by subscribing to this Google Group.