【发布时间】:2016-06-24 21:03:42
【问题描述】:
我有一个项目 DemoA,它是基于 git 存储库 Project1 构建的。
不幸的是,DemoA 最初只是从 Project1 中复制的文件,然后才变成一个实际的长期项目。我现在想让 Project1 成为 DemoA 的子模块,但更重要的是,我希望在 DemoA 中合并对从 Project1 派生的代码所做的更改。
我在 DemoA 上进行了子树拆分,以创建一个分支 P1,其中包含对 DemoA 中的 Project1 代码库所做的所有更改。
在将 DemoA 实例化为存储库之前,我还设法添加了对 Project1 所做的更改。
Project1
A - B - C - D - E
Demo1/P1
(untracked changes) F - G - H - I
where the files in E are identical to F
我想要什么:
Project 1
A - B - C - D - E - G - H - I
显然 E 和 F 的哈希值不同,所以当我将 Demo1/P1 作为远程添加到 Project1 并尝试合并时,它抱怨没有共同的祖先。
我试过using format-patch,但是 git am 抱怨了
错误:file.xyz:索引中已存在
我正在尝试rebase onto a different branch,正在做:
git rebase -s recursive -X subtree=project1dir --onto (E-hash) (F-hash) emptybranch
但我显然不明白它实际上在做什么,因为它似乎并没有真正做任何事情。
有没有一种干净的方法可以做到这一点?我不介意这个过程有些手动,但我想保留历史。
【问题讨论】:
标签: git version-control merge