24

我正在尝试做的事情:测试来自 github 的拉取请求。我想在本地将拉取请求合并到 master 并在结果上运行一些测试。由于存储库很大,我做了一个浅克隆。

为了能够进行合并,我获取越来越多的提交(git fetch随着增加--depth),直到我拥有merge-commitmaster 之间的拉取请求。

但是,它并非每次都有效。看起来我不仅需要合并基础,还需要master..merge_base 范围内的每个提交。但是我不确定该怎么做。

所以,问题是:我如何获取足够的历史来进行合并?

4

2 回答 2

12

如果您有feature分支时的历史master但不想要 master 的完整历史,那么您可以估计分支日期并使用;

git fetch --shallow-since=<date> origin master

很难使用任何其他形式的git fetch来做你想做的事(查询远程合并库),因为它会git fetch获取 refs。可能没有您正在寻找的参考。

您可以使用以下脚本自动进行挖掘。

while [ -z $( git merge-base master feature ) ]; do     
    git fetch -q --deepen=1 origin master feature;
done
于 2019-05-13T13:19:04.573 回答
3

您需要(我认为)以 catch-22 的方式使用 'git describe --all --first-parent' 来告诉您来自相应分支的给定提交的深度。但是,在您进行浅层提取之前,我不确定如何从 Github 获取它;-)

于 2014-11-21T12:59:37.667 回答