用于在两个分支之间找到补丁集的脚本

时间:2014-10-12 13:26:12

标签: git version-control graph git-merge

我知道git merge-base获得两个分支的最佳共同父级。但是如何获得一个合并的补丁集,给我一个补丁,以应用于其中一个分支,以使其进入另一个分支的poing?

Git开发是非线性的,这意味着您可以找到许多这些补丁集。我瞄准了一个。

此补丁集的基本情况是新分支中没有发生合并的地方,从分支HEAD到共同祖先的路径可以用作补丁集(也是唯一的一个)。

归纳案例是在祖先和分支HEAD之间的此路径中找到合并时:

  1. 包含HEAD和子合并之间路径中的所有提交。
  2. 包含子合并提交
  3. 找到最接近祖先孩子的祖先。
  4. 忽略此子合并与此子祖先之间的所有提交。
  5. 这个子祖先和祖先之间的最短补丁集合与此集合。
  6. 如果在步骤3中找不到子祖先,则包括祖先子节点的所有提交(合并与不包含我们祖先的分支)。
  7. 这是一个复杂的操作git已经做到了。尝试将其重现到此补丁集很困难。脚本如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

我的问题难以解析,但听起来很像你只是问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