git如何创建文件责备?

我最近了解了 git blame 及其作用。我想知道 git 如何查找文件中的每一行何时更改,甚至跨文件重命名。换句话说,我想知道blame算法是如何工作的。

iCMS 回答:git如何创建文件责备?

首先,几乎所有其他 SCM 中也存在 blame 功能,包括 CVS。因此,所使用的算法会因您使用的工具而异。

不过,基本上,实现此目的的最简单方法是从文件的最新状态开始,然后向后浏览历史记录(向过去)并应用每个变更集的否定。

每个受影响的行都标记为属于最后一次提交,所有其他行都标记为前一个。除此之外,您将计算后面这些行的数量。然后你用提交 n-1 和 n-2 重新启动这个过程。如果行不明确属于“n-1”,它们将被忽略,因为这意味着它们已被一些最近的提交更改(实际上,仍将应用反向变更集,但不会更新提交编号)。否则,您应用相同的计算,更新每行所属的提交编号。

然后你只需要一直向下迭代直到初始提交,但如果你达到了上面引用的“行数”达到零的状态,你知道你可以在这里停下来,因为这意味着所有自文件的原始状态以来,行已被更改,无需再进一步。

本文链接:https://www.f2er.com/455809.html

大家都在问