As @mvp said, "it is not." To answer your comment: "thread of this process" - it works in much the same way as the git diff s series, starting with the most recent version of the file and working backwards until each line has a designated beginning.
Suppose you have a short file with four lines and it is the most recent (i.e. the version in HEAD ). Suppose further that git diff shows that in the HEAD~1 revision there were only the first three lines, and I added this last (fourth) line. Then the โerrorโ for line 4 will be mine: it was not in the previous version, and it was there in the current version, so I had to add it.
This leaves the problem of figuring out who โblamesโ these three lines. So now git should distinguish between HEAD~1 and HEAD~2 . If these three lines look exactly the same as in HEAD~2 , which can be, if, for example, the change from HEAD~2 to HEAD~1 was just a deletion of some lines, then we must continue to move forward in history.
At some point, git diff will show that someone has added line 1, line 2 and / or line 3 (in some previous version), possibly when deleting some other lines; or in the worst case, git will reach "root commit": commit without parents. In any case, the one who committed the fixation that caused these lines to appear should be to blame.
torek source share