假设我在git repo中有一个文件,其中包含一行在commit a
中引入的代码(我可以用git blame
看到),假设这一行是文件中的第5行,那么commit a
延迟了一段时间,所以文件中的其他内容也在同时发生了变化,特别是在这一行上面的一行被删除了;因此,在提交a
时,我的行是第6行。
我现在的问题是:我怎样才能获得HEAD中的行号和其他提交(行被引入/修改的提交,或之后的提交)中的行号之间的Map?在我的例子中,我需要一个如下所示的Map(对于输入5
):
- 头部:5
a
:6b
(a
和HEAD之间的另一个提交):7
因为行内容可能在文件中出现过多次,我不能简单地搜索它,但显然git知道哪一行是哪一行(-〉git blame
)。
有没有一个'纯' git解决方案,或者有没有什么库可以解决这个问题?
1条答案
按热度按时间hyrbngr71#
以Linux内核为例,假设我们正在查找
v5.0
中的2616
行,我们想知道它在v5.15
中的结果是什么:我们可以直接在新版本中查找它,记住这只是为了让我们知道正确的答案应该是什么:
为了回答这个问题,我们可以这样使用
git blame
:它似乎找到了正确答案:
3149
.我不能100%确定这在一般情况下是否有效,但我想我会分享我的发现。