Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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])
like image 340
Jonathan.Brink Avatar asked Aug 13 '14 12:08

Jonathan.Brink


1 Answers

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:

  • git help gitrevisions
  • Git Tools - Revision Selection
  • Carats and Tildes, Resets and Reverts Note: this article is talking about reset however the graph and revision part is helpful towards the middle of the article.

For more help with git blame see git help blame

like image 88
Peter Rincker Avatar answered Oct 24 '22 11:10

Peter Rincker