【发布时间】:2021-01-01 18:11:56
【问题描述】:
我尝试了 git merge-base,但它只提供两个分支的最新共同祖先,而不是最旧的一个。谁能帮帮我?
谢谢!!
【问题讨论】:
-
您的意思是两个提示都追溯到最旧的根,或者是具有多个子代的最旧的提交,其后代包括两个提示,还是什么?
-
基本上是最老的根。例如,我针对主分支创建了一个名为“Sky”的分支。因为有人更新了我的主分支,所以我后来从主分支发出了一些拉取请求,我正在寻找一开始就创建“天空”的提交。
-
好的。这不是 Git 术语中的根提交,根提交根本没有祖先,它们是整个历史上最古老的提交。你所要求的是对那些想要 Git 已经处理的东西的人的常见要求。你可以得到你所追求的东西,
git rev-list --first-parent在每个技巧上并找到第一个常见的,但没有人从 Git 中获得全部价值会发现它很有用。你能解释一下你打算用这个做什么,你在什么情况下触发了这个请求? -
嗨,jthill,感谢您的帮助。我基本上是在尝试计算分支从最终到初始的可用代码更改的行数。例如,在创建分支“Sky”后,A 修改了代码,添加了一行“a+b=c”、“c+d=e”,并对其进行了提交。之后,B 人将 master 分支合并到“Sky”中以更新分支并删除“a+b=c”。后来分支“Sky”的代码修改通过后,我们决定将其合并到master中,line_of_code_changes = 1(因为“a+b=c”被人B删除,“a+b=c”不可用代码更改)。想要 line_of_code_changes。
-
你说你想计算可用更改,并正确显示 Git 如何不将恢复的 a=b+c 更改计算为可用,但又说你想计算 line_of_code_changes,意思是什么?如果进行了十次更改并还原了十次,您要计算十次吗?如果它在没有合并的情况下被还原,您是否要将原始更改及其还原都计为单独的更改?