2

问题的简短描述

在一个新的开发人员组加入我们的项目后,他们初始化了一个新的 repo 并将master 的快照复制(未合并!)到新创建的 repo 中。因此,在他们的分支中,旧文件丢失了master. 之后,他们开始了典型的 git 工作流程,包括提交、分支、合并来自 master 的更新等。现在的问题是将他们的代码合并到masterdev排除前两次提交并保留我们的历史记录(并且保留他们的历史记录也很好)。

详细问题描述

所以我们有分支masterdevfunny_developers

这是我们的分支结构:

I---A---B---C---D---Y...X      <--(master/dev)
            \!\      \
       I'---IABC--G--DY..Z     <--(funny_developers flow)

I...C...X- 是我们的主要开发流程(master现在dev分支已同步)与提交历史。此流没有从funny_developers分支导入

I'- 是一个提交,其中funny_developers重新启动了一个空的新仓库(似乎他们做了git-init?)。

IABC- 非常脏的提交,将提交时funny_developers存在的所有文件复制为新文件。不合并 from ,只是重新创建项目的文件结构!所以他们放弃了在分支演化过程中所做的所有更改历史)。masterCCmaster

G..Z- 是他们进行大量更改的大量提交。在这个流程中,他们还多次合并了来自 master 的更新,创建了自己的分支,将它们合并到funny_developers(有时通过冲突解决)等等。

所以现在我在合并G..Zmaster保留我们最初的提交历史和它们(排除I'IABC提交)时遇到了问题。

问题

您能否建议我最好的方法(如果存在)来获取他们的提交master并保留提交历史记录,不包括前两个?

我一次拯救女王和王国的实验

我试过了git cherry-pick G..Z。但他们在并行分支中进行编码,并且正在将大量合并到funny_developers. 他们解决了很多自己的分支冲突。如果我决定使用这种方法,我似乎需要很多时间来再次解决它们。

我试过git rebase --onto master IABC Z了,期待它能够将所有的分支桶移动G..Zmaster. 但是我遇到了一堆与很久以前的提交相关的冲突(甚至在'funny_developers'开始之前)。而且我无法理解它们与实际 rebase 的关系(可能是因为他们已经重新初始化了 repo ......)。

无论如何,如果我找不到保留“两个历史”的解决方案,我倾向于为他们的所有工作制作差异,并将其作为单个补丁提交提供给master.

4

0 回答 0