我想做的是:测试来自github的拉取请求。我想在本地合并一个拉取请求到master中,并对结果进行一些测试。由于仓库很大,我做了一个浅克隆。
为了能够进行合并,我获取越来越多的提交(git fetch
,--depth
不断增加),直到我在主请求和拉请求之间获得merge-commit
。
但是,它并不是每次都有效。看起来我不仅需要merge-base,还需要master..merge
_base范围内的每个提交。我不知道如何做到这一点。
所以,问题是:我如何获取足够的历史来进行合并?
3条答案
按热度按时间a8jjtwal1#
如果你有
feature
从master
分支的历史记录,但不想知道master的全部历史记录,那么你可以估计一个分支日期并使用;很难使用其他形式的
git fetch
来做你想要的事情(查询remote以获得合并基),因为git fetch
获取的是引用,可能没有你要找的引用。您可以使用以下脚本自动执行挖掘。
w1jd8yoj2#
你需要的(我认为),以一种第二十二条军规的方式,是'git describe --all --first-parent'来告诉你来自适当分支的给定提交的深度。- )
h6my8fg23#
我最近遇到了这个问题,并发现了一种节省大量时间的方法,即从API获得merge-base提交,而不是下载足够的存储库信息来计算它https://docs.github.com/en/rest/commits/commits#compare-two-commits
此API调用相当于
如果你喜欢的话也可以卷起来
以下是我的github工作流程/操作的更多内容
基本上,一旦我检查了合并基础SHA,我就可以构建工件,并比较我在PR分支上构建的工件
如果你需要合并库和PR之间的提交,你也必须浅获取它们,但是至少使用合并库你知道你的终点