Having an initial repository I create a Test.TXT
file and fill it in with this content:
Version 1
Version 1
Version 1
Next, it is committed:
$ git commit -am Version1
And the Test.TXT
has suffered some ammendment:
Version 1
Version 2
Version 1
$ git commit -am Version2
Now I'm curious to find out what changes were made to the file since Version1:
$ git log --oneline -- Test.TXT
f315c22 (HEAD -> master) Version2
3b173c2 Version1
$ git blame 3b173c2 .. -- Test.TXT
^3b173c2 (Mergasov 2020-10-06 13:49:50 +0300 1) version 1
^3b173c2 (Mergasov 2020-10-06 13:49:50 +0300 2) version 1
^3b173c2 (Mergasov 2020-10-06 13:49:50 +0300 3) version 1
Such blame's output is a bit unexpected for me.
Firtsly, what does the caret symbol (^) stand for here? The blame docs refer to it as a boundary marker (that is, it marks the first commit for a file). But if I type in the HEAD
(it's the second commit of the Test.TXT
) instead of 3b173c2
, I would get ^f315c22
(in every rows) yet again.
So using git blame in this way just cause appearence of the version of a file which fits the choosed SHA1 commit, doesn't it? It doesn't even show SHA1 of either previous commits (such result can be achieved by using blame without two dots) nor following ones (it that I try to accomplish). In lieu we can see the typed SHA1 version setting off by the caret symbol.
Can anyone explain what's the reason to use this command (with the double dot)?