Search code examples
gitvimvim-fugitivegit-blame

Vim Fugitive: Gblame reblame options


I've been using Fugitive's Gblame recently but don't quite understand what "reblame" does.

Can someone describe a little more clearly what these options do:

 -     reblame at commit
 ~     reblame at [count]th first grandparent
 P     reblame at [count]th parent (like HEAD^[count])

Solution

  • Think of reblame as navigating to a commit and then running blame on your file or git blame <commit> -- <file>

    • - the simplest case. Use the commit in question under your cursor and reblame the file.
    • ~ Is equivalent to running git blame <rev>~[count] -- <file>
    • P Is equivalent to running git blame <rev>^[count] -- <file>

    For the common case, i.e. no [count], ~ and P are the equivalent. (Note that [count] defaults to 1)

    Quick revision tutorial taken from git help gitrevisions:

    Here is an illustration, by Jon Loeliger.
    Both commit nodes B and C are parents of commit node A.
    Parent commits are ordered left-to-right.
    
    G   H   I   J
     \ /     \ /
      D   E   F
       \  |  / \
        \ | /   |
         \|/    |
          B     C
           \   /
            \ /
             A
    A =      = A^0
    B = A^   = A^1     = A~1
    C = A^2  = A^2
    D = A^^  = A^1^1   = A~2
    E = B^2  = A^^2
    F = B^3  = A^^3
    G = A^^^ = A^1^1^1 = A~3
    H = D^2  = B^^2    = A^^^2  = A~2^2
    I = F^   = B^3^    = A^^3^
    J = F^2  = B^3^2   = A^^3^2
    

    To understand more about git revision notation see:

    For more help with git blame see git help blame