| git-hyper-blame(1) |
| ================== |
| |
| NAME |
| ---- |
| git-hyper-blame - |
| include::_git-hyper-blame_desc.helper.txt[] |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| 'git hyper-blame' [-i <rev> [-i <rev> ...]] [--ignore-file=<file>] |
| [--no-default-ignores] [<rev>] [--] <file> |
| |
| DESCRIPTION |
| ----------- |
| |
| `git hyper-blame` is like `git blame` but it can ignore or "look through" a |
| given set of commits, to find the real culprit. |
| |
| This is useful if you have a commit that makes sweeping changes that are |
| unlikely to be what you are looking for in a blame, such as mass reformatting or |
| renaming. By adding these commits to the hyper-blame ignore list, `git |
| hyper-blame` will look past these commits to find the previous commit that |
| touched a given line. |
| |
| Follows the normal `blame` syntax: annotates `<file>` with the revision that |
| last modified each line. Optional `<rev>` specifies the revision of `<file>` to |
| start from. |
| |
| Automatically looks for a file called `.git-blame-ignore-revs` in the repository |
| root directory. This file has the same syntax as the `--ignore-file` argument, |
| and any commits mentioned in this file are added to the ignore list. |
| |
| OPTIONS |
| ------- |
| |
| -i <rev>:: |
| A revision to ignore. Can be specified as many times as needed. |
| |
| --ignore-file=<file>:: |
| A file containing a list of revisions to ignore. Can have comments beginning |
| with `#`. |
| |
| --no-default-ignores:: |
| Do not ignore commits from the `.git-blame-ignore-revs` file. |
| |
| EXAMPLE |
| ------- |
| |
| Let's run `git blame` on a file: |
| |
| demo:1[] |
| |
| Notice that almost the entire file has been blamed on a formatting change? You |
| aren't interested in the uppercasing of the file. You want to know who |
| wrote/modified those lines in the first place. Just tell `hyper-blame` to ignore |
| that commit: |
| |
| demo:2[] |
| |
| `hyper-blame` places a `*` next to any line where it has skipped over an ignored |
| commit, so you know that the line in question has been changed (by an ignored |
| commit) since the given person wrote it. |
| |
| CAVEATS |
| ------- |
| |
| When a line skips over an ignored commit, a guess is made as to which commit |
| previously modified that line, but it is not always clear where the line came |
| from. If the ignored commit makes lots of changes in close proximity, in |
| particular adding/removing/reordering lines, then the wrong authors may be |
| blamed for nearby edits. |
| |
| For this reason, `hyper-blame` works best when the ignored commits are be |
| limited to minor changes such as formatting and renaming, not refactoring or |
| other more invasive changes. |
| |
| SEE ALSO |
| -------- |
| linkgit:git-blame[1] |
| |
| include::_footer.txt[] |
| |
| // vim: ft=asciidoc: |