Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 用于在两个分支之间查找修补程序集的脚本_Git_Version Control_Graph_Git Merge - Fatal编程技术网

Git 用于在两个分支之间查找修补程序集的脚本

Git 用于在两个分支之间查找修补程序集的脚本,git,version-control,graph,git-merge,Git,Version Control,Graph,Git Merge,我知道,git merge base为两个分支获取最佳公共父级。但是我如何得到一个补丁集,它合并了,给我一个补丁应用到其中一个分支上,让它到达另一个分支所在的点 Git开发是非线性的,这意味着您可以找到许多这样的补丁集。我的目标是一个 此补丁集的基本情况是在新分支中没有发生合并,并且从分支头到公共祖先的路径可以用作补丁集(也是唯一的路径) 归纳情况是当在祖先和分支头之间的路径中发现合并时: 包含头和子合并之间路径中的所有提交 包括子合并提交 查找最近的子祖先,即祖先的子祖先 忽略此子合并和此子祖

我知道,
git merge base
为两个分支获取最佳公共父级。但是我如何得到一个补丁集,它合并了,给我一个补丁应用到其中一个分支上,让它到达另一个分支所在的点

Git开发是非线性的,这意味着您可以找到许多这样的补丁集。我的目标是一个

此补丁集的基本情况是在新分支中没有发生合并,并且从分支头到公共祖先的路径可以用作补丁集(也是唯一的路径)

归纳情况是当在祖先和分支头之间的路径中发现合并时:

  • 包含头和子合并之间路径中的所有提交
  • 包括子合并提交
  • 查找最近的子祖先,即祖先的子祖先
  • 忽略此子合并和此子祖先之间的所有提交
  • 此子祖先和祖先之间的最短面片集与此集相结合
  • 如果在步骤3中,未找到子祖先,则包含作为祖先子级的分支的所有提交(合并是与不包含我们的祖先的分支合并)

  • 这是git已经完成的复杂操作。试图将其复制到这个补丁集是很困难的。脚本是如何实现这一点的?

    我很难解析您的问题,但听起来您只是在问
    git-rebase
    是如何工作的?它生成的格式补丁如下所示

    git format-patch -k --stdout --full-index --cherry-pick --right-only --src-prefix=a/ --dst-prefix=b/ --no-renames --no-cover-letter BRANCH1...BRANCH2
    

    你说得对。我的问题很难理解。我相信我甚至在解释算法时犯了错误。你的答案是什么?它是
    git-rebase
    调用的,以获得要应用的补丁列表,这听起来像是你在寻找的