【发布时间】:2016-02-01 05:20:14
【问题描述】:
场景:具有完全断开的历史片段的存储库。例如。来自没有共同 git 历史的不同遥控器。 (这通常发生在使用 git subtree 的场景中。)
是否可以挑选这两个提交之间的差异,即使它们没有共同的历史? (并且活动提交与这两者中的任何一个都没有共同的历史)
我试过这个(进入带有-X subtree=sub/dir 选项的子目录):
git cherry-pick -X subtree=vendor/package aaa/aaa..bbb/bbb
如果没有子树,这会更简单:
git cherry-pick aaa/aaa..bbb/bbb
其中 aaa/aaa 和 bbb/bbb 是两个具有断开历史记录的提交。
不幸的是,这不起作用:aaa/aaa..bbb/bbb 不被读取为差异,而是其他内容。
git show aaa/aaa..bbb/bbb 可以显示相同的内容,这与git diff aaa/aaa bbb/bbb 完全不同。例如。如果两者有相同的文件,则 git diff 将为空,但 git show a..b 将只显示 b,而不显示 a。
注意:我的个人用例是子树背景。我提到这一点是为了避免人为的用例,人们通常会开始辩论用例的有效性而不是实际问题。
理想的答案将首先解决一般情况,然后解决子树情况。
【问题讨论】:
标签: git git-cherry-pick