我们有一个项目存储库left
。
然后,我们从right
的最高快照创建了一个克隆存储库left
(并在那里工作了几周)。
我们如何合并两个图?
(以使团队在两者之间合并)
注意:切点包含完全相同的变更集,没有冲突。
答案 0 :(得分:1)
注意:切点包含完全相同的变更集,没有冲突。
所以,我认为您应该使用git replace。
最有可能的命令:
git replace --graft <commit> [<parent>…]
如果我理解得很好,您希望将第一个蓝色提交与最后一个橙色链接相关联,后者是包含完全相同内容的提交。
命令稍微复杂一点,因为最后一个橙色提交是合并提交,因此您应该在命令行中使用两个父级的sha1(倒数第二个橙色和最后一个绿色)。
所以命令应该是:
git replace --graft <Sha1_of_first_blue_commit> <Sha1_of_second_to_last_orange_commit> <Sha1_of_last_green_commit>
完成后,验证历史记录。
如果不合适,请删除替换的提交。
如果适合您,那么您应该使用git filter-branch通过在替换提交后重写所有历史记录来使其永久(使用git filter-branch -- --all
)。
来自文档:
注意:此命令支持.git / info / grafts文件和refs / replace /名称空间中的refs。如果定义了任何嫁接或替换引用,则运行此命令将使它们永久化。
它将修改蓝色和后续提交的历史记录,因此,要推送它,您将必须对所有已更新的引用执行git push --force-with-lease
。
PS:也有可能推送替换的对象(解决方案here),但这不是推荐的解决方案。